(function() {
	var bJ, aU = bJ = aU || {
		version : "1.3.4"
	};
	aU.guid = "$BAIDU$";
	window[aU.guid] = window[aU.guid] || {};
	aU.object = aU.object || {};
	aU.extend = aU.object.extend = function(cn, T) {
		for ( var cm in T) {
			if (T.hasOwnProperty(cm)) {
				cn[cm] = T[cm]
			}
		}
		return cn
	};
	aU.dom = aU.dom || {};
	aU.dom.g = function(T) {
		if ("string" == typeof T || T instanceof String) {
			return document.getElementById(T)
		} else {
			if (T && T.nodeName && (T.nodeType == 1 || T.nodeType == 9)) {
				return T
			}
		}
		return null
	};
	aU.g = aU.G = aU.dom.g;
	aU.dom.hide = function(T) {
		T = aU.dom.g(T);
		T.style.display = "none";
		return T
	};
	aU.hide = aU.dom.hide;
	aU.lang = aU.lang || {};
	aU.lang.isString = function(T) {
		return "[object String]" == Object.prototype.toString.call(T)
	};
	aU.isString = aU.lang.isString;
	aU.dom._g = function(T) {
		if (aU.lang.isString(T)) {
			return document.getElementById(T)
		}
		return T
	};
	aU._g = aU.dom._g;
	aU.dom.contains = function(T, cm) {
		var cn = aU.dom._g;
		T = cn(T);
		cm = cn(cm);
		return T.contains ? T != cm && T.contains(cm) : !!(T
				.compareDocumentPosition(cm) & 16)
	};
	aU.browser = aU.browser || {};
	if (/msie (\d+\.\d)/i.test(navigator.userAgent)) {
		aU.browser.ie = aU.ie = document.documentMode || +RegExp["\x241"]
	}
	aU.dom._NAME_ATTRS = (function() {
		var T = {
			cellpadding : "cellPadding",
			cellspacing : "cellSpacing",
			colspan : "colSpan",
			rowspan : "rowSpan",
			valign : "vAlign",
			usemap : "useMap",
			frameborder : "frameBorder"
		};
		if (aU.browser.ie < 8) {
			T["for"] = "htmlFor";
			T["class"] = "className"
		} else {
			T.htmlFor = "for";
			T.className = "class"
		}
		return T
	})();
	aU.dom.setAttr = function(cm, T, cn) {
		cm = aU.dom.g(cm);
		if ("style" == T) {
			cm.style.cssText = cn
		} else {
			T = aU.dom._NAME_ATTRS[T] || T;
			cm.setAttribute(T, cn)
		}
		return cm
	};
	aU.setAttr = aU.dom.setAttr;
	aU.dom.setAttrs = function(cn, T) {
		cn = aU.dom.g(cn);
		for ( var cm in T) {
			aU.dom.setAttr(cn, cm, T[cm])
		}
		return cn
	};
	aU.setAttrs = aU.dom.setAttrs;
	aU.string = aU.string || {};
	(function() {
		var T = new RegExp(
				"(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+\x24)", "g");
		aU.string.trim = function(cm) {
			return String(cm).replace(T, "")
		}
	})();
	aU.trim = aU.string.trim;
	aU.dom.removeClass = function(cq, cr) {
		cq = aU.dom.g(cq);
		var co = cq.className.split(/\s+/), cs = cr.split(/\s+/), cm, T = cs.length, cn, cp = 0;
		for (; cp < T; ++cp) {
			for (cn = 0, cm = co.length; cn < cm; ++cn) {
				if (co[cn] == cs[cp]) {
					co.splice(cn, 1);
					break
				}
			}
		}
		cq.className = co.join(" ");
		return cq
	};
	aU.removeClass = aU.dom.removeClass;
	aU.dom.insertHTML = function(co, T, cn) {
		co = aU.dom.g(co);
		var cm, cp;
		if (co.insertAdjacentHTML) {
			co.insertAdjacentHTML(T, cn)
		} else {
			cm = co.ownerDocument.createRange();
			T = T.toUpperCase();
			if (T == "AFTERBEGIN" || T == "BEFOREEND") {
				cm.selectNodeContents(co);
				cm.collapse(T == "AFTERBEGIN")
			} else {
				cp = T == "BEFOREBEGIN";
				cm[cp ? "setStartBefore" : "setEndAfter"](co);
				cm.collapse(cp)
			}
			cm.insertNode(cm.createContextualFragment(cn))
		}
		return co
	};
	aU.insertHTML = aU.dom.insertHTML;
	aU.dom.show = function(T) {
		T = aU.dom.g(T);
		T.style.display = "";
		return T
	};
	aU.show = aU.dom.show;
	aU.dom.getDocument = function(T) {
		T = aU.dom.g(T);
		return T.nodeType == 9 ? T : T.ownerDocument || T.document
	};
	aU.dom.addClass = function(cq, cr) {
		cq = aU.dom.g(cq);
		var cm = cr.split(/\s+/), T = cq.className, cp = " " + T + " ", co = 0, cn = cm.length;
		for (; co < cn; co++) {
			if (cp.indexOf(" " + cm[co] + " ") < 0) {
				T += " " + cm[co]
			}
		}
		cq.className = T;
		return cq
	};
	aU.addClass = aU.dom.addClass;
	aU.dom._styleFixer = aU.dom._styleFixer || {};
	aU.dom._styleFilter = aU.dom._styleFilter || [];
	aU.dom._styleFilter.filter = function(cm, cp, cq) {
		for ( var T = 0, co = aU.dom._styleFilter, cn; cn = co[T]; T++) {
			if (cn = cn[cq]) {
				cp = cn(cm, cp)
			}
		}
		return cp
	};
	aU.string.toCamelCase = function(T) {
		if (T.indexOf("-") < 0 && T.indexOf("_") < 0) {
			return T
		}
		return T.replace(/[-_][^-_]/g, function(cm) {
			return cm.charAt(1).toUpperCase()
		})
	};
	aU.dom.getStyle = function(cn, cm) {
		var cq = aU.dom;
		cn = cq.g(cn);
		cm = aU.string.toCamelCase(cm);
		var cp = cn.style[cm];
		if (!cp) {
			var T = cq._styleFixer[cm], co = cn.currentStyle
					|| (aU.browser.ie ? cn.style : getComputedStyle(cn, null));
			cp = T && T.get ? T.get(cn, co) : co[T || cm]
		}
		if (T = cq._styleFilter) {
			cp = T.filter(cm, cp, "get")
		}
		return cp
	};
	aU.getStyle = aU.dom.getStyle;
	if (/opera\/(\d+\.\d)/i.test(navigator.userAgent)) {
		aU.browser.opera = +RegExp["\x241"]
	}
	aU.browser.isWebkit = /webkit/i.test(navigator.userAgent);
	aU.browser.isGecko = /gecko/i.test(navigator.userAgent)
			&& !/like gecko/i.test(navigator.userAgent);
	aU.browser.isStrict = document.compatMode == "CSS1Compat";
	aU.dom.getPosition = function(T) {
		T = aU.dom.g(T);
		var cu = aU.dom.getDocument(T), co = aU.browser, cr = aU.dom.getStyle, cn = co.isGecko > 0
				&& cu.getBoxObjectFor
				&& cr(T, "position") == "absolute"
				&& (T.style.top === "" || T.style.left === ""), cs = {
			left : 0,
			top : 0
		}, cq = (co.ie && !co.isStrict) ? cu.body : cu.documentElement, cv, cm;
		if (T == cq) {
			return cs
		}
		if (T.getBoundingClientRect) {
			cm = T.getBoundingClientRect();
			cs.left = Math.floor(cm.left)
					+ Math.max(cu.documentElement.scrollLeft,
							cu.body.scrollLeft);
			cs.top = Math.floor(cm.top)
					+ Math.max(cu.documentElement.scrollTop, cu.body.scrollTop);
			cs.left -= cu.documentElement.clientLeft;
			cs.top -= cu.documentElement.clientTop;
			var ct = cu.body, cw = parseInt(cr(ct, "borderLeftWidth")), cp = parseInt(cr(
					ct, "borderTopWidth"));
			if (co.ie && !co.isStrict) {
				cs.left -= isNaN(cw) ? 2 : cw;
				cs.top -= isNaN(cp) ? 2 : cp
			}
		} else {
			cv = T;
			do {
				cs.left += cv.offsetLeft;
				cs.top += cv.offsetTop;
				if (co.isWebkit > 0 && cr(cv, "position") == "fixed") {
					cs.left += cu.body.scrollLeft;
					cs.top += cu.body.scrollTop;
					break
				}
				cv = cv.offsetParent
			} while (cv && cv != T);
			if (co.opera > 0
					|| (co.isWebkit > 0 && cr(T, "position") == "absolute")) {
				cs.top -= cu.body.offsetTop
			}
			cv = T.offsetParent;
			while (cv && cv != cu.body) {
				cs.left -= cv.scrollLeft;
				if (!co.opera || cv.tagName != "TR") {
					cs.top -= cv.scrollTop
				}
				cv = cv.offsetParent
			}
		}
		return cs
	};
	if (/firefox\/(\d+\.\d)/i.test(navigator.userAgent)) {
		aU.browser.firefox = +RegExp["\x241"]
	}
	(function() {
		var T = navigator.userAgent;
		if (/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(T)
				&& !/chrome/i.test(T)) {
			aU.browser.safari = +(RegExp["\x241"] || RegExp["\x242"])
		}
	})();
	if (/chrome\/(\d+\.\d)/i.test(navigator.userAgent)) {
		aU.browser.chrome = +RegExp["\x241"]
	}
	aU.array = aU.array || {};
	aU.array.each = function(cq, co) {
		var cn, cp, cm, T = cq.length;
		if ("function" == typeof co) {
			for (cm = 0; cm < T; cm++) {
				cp = cq[cm];
				cn = co.call(cq, cp, cm);
				if (cn === false) {
					break
				}
			}
		}
		return cq
	};
	aU.each = aU.array.each;
	aU.lang.guid = function() {
		return "TANGRAM__" + (window[aU.guid]._counter++).toString(36)
	};
	window[aU.guid]._counter = window[aU.guid]._counter || 1;
	window[aU.guid]._instances = window[aU.guid]._instances || {};
	aU.lang.isFunction = function(T) {
		return "[object Function]" == Object.prototype.toString.call(T)
	};
	aU.lang.Class = function(T) {
		this.guid = T || aU.lang.guid();
		window[aU.guid]._instances[this.guid] = this
	};
	window[aU.guid]._instances = window[aU.guid]._instances || {};
	aU.lang.Class.prototype.dispose = function() {
		delete window[aU.guid]._instances[this.guid];
		for ( var T in this) {
			if (!aU.lang.isFunction(this[T])) {
				delete this[T]
			}
		}
		this.disposed = true
	};
	aU.lang.Class.prototype.toString = function() {
		return "[object " + (this._className || "Object") + "]"
	};
	aU.lang.Event = function(T, cm) {
		this.type = T;
		this.returnValue = true;
		this.target = cm || null;
		this.currentTarget = null
	};
	aU.lang.Class.prototype.addEventListener = function(co, cn, cm) {
		if (!aU.lang.isFunction(cn)) {
			return
		}
		!this.__listeners && (this.__listeners = {});
		var T = this.__listeners, cp;
		if (typeof cm == "string" && cm) {
			if (/[^\w\-]/.test(cm)) {
				throw ("nonstandard key:" + cm)
			} else {
				cn.hashCode = cm;
				cp = cm
			}
		}
		co.indexOf("on") != 0 && (co = "on" + co);
		typeof T[co] != "object" && (T[co] = {});
		cp = cp || aU.lang.guid();
		cn.hashCode = cp;
		T[co][cp] = cn
	};
	aU.lang.Class.prototype.removeEventListener = function(cn, cm) {
		if (aU.lang.isFunction(cm)) {
			cm = cm.hashCode
		} else {
			if (!aU.lang.isString(cm)) {
				return
			}
		}
		!this.__listeners && (this.__listeners = {});
		cn.indexOf("on") != 0 && (cn = "on" + cn);
		var T = this.__listeners;
		if (!T[cn]) {
			return
		}
		T[cn][cm] && delete T[cn][cm]
	};
	aU.lang.Class.prototype.dispatchEvent = function(co, T) {
		if (aU.lang.isString(co)) {
			co = new aU.lang.Event(co)
		}
		!this.__listeners && (this.__listeners = {});
		T = T || {};
		for ( var cn in T) {
			co[cn] = T[cn]
		}
		var cn, cm = this.__listeners, cp = co.type;
		co.target = co.target || this;
		co.currentTarget = this;
		cp.indexOf("on") != 0 && (cp = "on" + cp);
		aU.lang.isFunction(this[cp]) && this[cp].apply(this, arguments);
		if (typeof cm[cp] == "object") {
			for (cn in cm[cp]) {
				cm[cp][cn].apply(this, arguments)
			}
		}
		return co.returnValue
	};
	aU.lang.Class.prototype.addEventListeners = function(cn, co) {
		if (typeof co == "undefined") {
			for ( var cm in cn) {
				this.addEventListener(cm, cn[cm])
			}
		} else {
			cn = cn.split(",");
			var cm = 0, T = cn.length, cp;
			for (; cm < T; cm++) {
				this.addEventListener(aU.trim(cn[cm]), co)
			}
		}
	};
	aU.lang.inherits = function(cr, cp, co) {
		var cn, cq, T = cr.prototype, cm = new Function();
		cm.prototype = cp.prototype;
		cq = cr.prototype = new cm();
		for (cn in T) {
			cq[cn] = T[cn]
		}
		cr.prototype.constructor = cr;
		cr.superClass = cp.prototype;
		if ("string" == typeof co) {
			cq._className = co
		}
	};
	aU.inherits = aU.lang.inherits;
	aU.lang.instance = function(T) {
		return window[aU.guid]._instances[T] || null
	};
	aU.platform = aU.platform || {};
	aU.platform.isMacintosh = /macintosh/i.test(navigator.userAgent);
	aU.platform.isWindows = /windows/i.test(navigator.userAgent);
	aU.platform.isX11 = /x11/i.test(navigator.userAgent);
	aU.platform.isAndroid = /android/i.test(navigator.userAgent);
	aU.platform.isIpad = /ipad/i.test(navigator.userAgent);
	aU.platform.isIphone = /iphone/i.test(navigator.userAgent);
	aU.lang.Event.prototype.inherit = function(cn) {
		var cm = this;
		this.domEvent = cn = window.event || cn;
		cm.clientX = cn.clientX || cn.pageX;
		cm.clientY = cn.clientY || cn.pageY;
		cm.offsetX = cn.offsetX || cn.layerX;
		cm.offsetY = cn.offsetY || cn.layerY;
		cm.screenX = cn.screenX;
		cm.screenY = cn.screenY;
		cm.ctrlKey = cn.ctrlKey || cn.metaKey;
		cm.shiftKey = cn.shiftKey;
		cm.altKey = cn.altKey;
		if (cn.touches) {
			cm.touches = [];
			for ( var T = 0; T < cn.touches.length; T++) {
				cm.touches.push({
					clientX : cn.touches[T].clientX,
					clientY : cn.touches[T].clientY,
					screenX : cn.touches[T].screenX,
					screenY : cn.touches[T].screenY,
					pageX : cn.touches[T].pageX,
					pageY : cn.touches[T].pageY,
					target : cn.touches[T].target,
					identifier : cn.touches[T].identifier
				})
			}
		}
		if (cn.changedTouches) {
			cm.changedTouches = [];
			for ( var T = 0; T < cn.changedTouches.length; T++) {
				cm.changedTouches.push({
					clientX : cn.changedTouches[T].clientX,
					clientY : cn.changedTouches[T].clientY,
					screenX : cn.changedTouches[T].screenX,
					screenY : cn.changedTouches[T].screenY,
					pageX : cn.changedTouches[T].pageX,
					pageY : cn.changedTouches[T].pageY,
					target : cn.changedTouches[T].target,
					identifier : cn.changedTouches[T].identifier
				})
			}
		}
		if (cn.targetTouches) {
			cm.targetTouches = [];
			for ( var T = 0; T < cn.targetTouches.length; T++) {
				cm.targetTouches.push({
					clientX : cn.targetTouches[T].clientX,
					clientY : cn.targetTouches[T].clientY,
					screenX : cn.targetTouches[T].screenX,
					screenY : cn.targetTouches[T].screenY,
					pageX : cn.targetTouches[T].pageX,
					pageY : cn.targetTouches[T].pageY,
					target : cn.targetTouches[T].target,
					identifier : cn.targetTouches[T].identifier
				})
			}
		}
		cm.rotation = cn.rotation;
		cm.scale = cn.scale;
		return cm
	};
	aU.lang.decontrol = function(cm) {
		var T = window[aU.guid];
		T._instances && (delete T._instances[cm])
	};
	aU.event = {};
	aU.on = aU.event.on = function(cn, cm, T) {
		if (!(cn = aU.g(cn))) {
			return cn
		}
		cm = cm.replace(/^on/, "").toLowerCase();
		if (cn.addEventListener) {
			cn.addEventListener(cm, T, false)
		} else {
			if (cn.attachEvent) {
				cn.attachEvent("on" + cm, T)
			}
		}
		return cn
	};
	aU.un = aU.event.un = function(cn, cm, T) {
		if (!(cn = aU.g(cn))) {
			return cn
		}
		cm = cm.replace(/^on/, "").toLowerCase();
		if (cn.removeEventListener) {
			cn.removeEventListener(cm, T, false)
		} else {
			if (cn.detachEvent) {
				cn.detachEvent("on" + cm, T)
			}
		}
		return cn
	};
	aU.dom.hasClass = function(cn, cm) {
		if (!cn || !cn.className || typeof cn.className != "string") {
			return false
		}
		var T = -1;
		try {
			T = cn.className == cm
					|| cn.className.search(new RegExp("(\\s|^)" + cm
							+ "(\\s|$)"))
		} catch (co) {
			return false
		}
		return T > -1
	};
	window.BMap = window.BMap || {};
	window.BMap.version = "1.2";
	window.BMap._register = [];
	window.BMap.register = function(T) {
		this._register.push(T)
	};
	window.BMap.apiLoad = window.BMap.apiLoad || function() {
	};
	function bj(co, cq) {
		co = aU.g(co);
		if (!co) {
			return
		}
		var cp = this;
		aU.lang.Class.call(cp);
		cp.config = {
			clickInterval : 200,
			enableDragging : true,
			enableKeyboard : false,
			enableDblclickZoom : true,
			enableContinuousZoom : false,
			enableWheelZoom : false,
			enableMouseDown : true,
			enablePinchToZoom : true,
			fps : 25,
			zoomerDuration : 240,
			actionDuration : 450,
			defaultCursor : bQ.defaultCursor,
			draggingCursor : bQ.draggingCursor,
			isOverviewMap : false,
			minZoom : 1,
			maxZoom : 18,
			mapType : BMAP_NORMAL_MAP,
			restrictBounds : false,
			drawer : BMAP_SYS_DRAWER,
			enableInertialDragging : false,
			drawMargin : 500,
			enableHighResolution : false
		};
		aU.extend(cp.config, cq || {});
		if (cp.highResolutionEnabled()) {
			var cs = document.querySelector("meta[name=viewport]");
			cs.content = "initial-scale=0.5, minimum-scale=0.5, maximum-scale=0.5, user-scalable=no, target-densitydpi=high-dpi"
		}
		cp.container = co;
		cp._setStyle(co);
		co.unselectable = "on";
		co.innerHTML = "";
		co.appendChild(cp.render());
		var cm = cp.getSize();
		cp.width = cm.width;
		cp.height = cm.height;
		cp.offsetX = 0;
		cp.offsetY = 0;
		cp.platform = co.firstChild;
		cp.maskLayer = cp.platform.firstChild;
		cp.maskLayer.style.width = cp.width + "px";
		cp.maskLayer.style.height = cp.height + "px";
		cp._panes = {};
		cp.centerPoint = new bR(0, 0);
		cp.mercatorCenter = new bR(0, 0);
		cp.zoomLevel = 1;
		cp.lastLevel = 0;
		cp.defaultZoomLevel = null;
		cp.defaultCenter = null;
		cp.currentCity = "";
		cp.cityCode = "";
		cp._hotspots = {};
		cp.currentOperation = 0;
		if (cp.config.mapType === BMAP_PERSPECTIVE_MAP) {
			_addStat(5002)
		}
		cq = cq || {};
		var cr = cp.mapType = cp.config.mapType;
		cp.projection = cr.getProjection();
		var T = cp.config;
		T.userMinZoom = cq.minZoom;
		T.userMaxZoom = cq.maxZoom;
		cp._checkZoom();
		cp.temp = {
			operating : false,
			arrow : 0,
			lastDomMoveTime : 0,
			lastLoadTileTime : 0,
			lastMovingTime : 0,
			canKeyboard : false,
			registerIndex : -1,
			curSpots : []
		};
		cp.platform.style.cursor = cp.config.defaultCursor;
		for ( var cn = 0; cn < BMap._register.length; cn++) {
			BMap._register[cn](cp)
		}
		cp.temp.registerIndex = cn;
		var cp = this;
		cc.load("map", function() {
			cp._draw()
		});
		if (bx()) {
			cc.load("oppc", function() {
				cp._asyncRegister()
			})
		}
		if (ap()) {
			cc.load("opmb", function() {
				cp._asyncRegister()
			})
		}
		co = null
	}
	aU.lang.inherits(bj, aU.lang.Class, "Map");
	aU
			.extend(
					bj.prototype,
					{
						render : function() {
							var T = U("div");
							var co = T.style;
							co.overflow = "visible";
							co.position = "absolute";
							co.zIndex = "0";
							co.top = co.left = "0px";
							var cm = U("div", {
								"class" : "BMap_mask"
							});
							var cn = cm.style;
							cn.position = "absolute";
							cn.top = cn.left = "0px";
							cn.zIndex = "9";
							cn.overflow = "hidden";
							cn.WebkitUserSelect = "none";
							T.appendChild(cm);
							return T
						},
						_setStyle : function(cm) {
							var T = cm.style;
							T.overflow = "hidden";
							if (ax(cm).position != "absolute") {
								T.position = "relative";
								T.zIndex = 0
							}
							T.backgroundColor = "#f0f0f0";
							T.color = "#000";
							T.textAlign = "left"
						},
						_updateCenterPoint : function(co, cm, ct, cs) {
							var cq = this.getMapType().getZoomUnits(
									this.getZoom());
							var cu = this.projection;
							var cr = true;
							if (ct && bR.isInRange(ct)) {
								this.centerPoint = new bR(ct.lng, ct.lat);
								cr = false
							}
							var cn = (ct && cs) ? cu.lngLatToMercator(ct,
									this.currentCity) : this.mercatorCenter;
							if (cn) {
								this.mercatorCenter = new bR(cn.lng + co * cq,
										cn.lat - cm * cq);
								var T = cu.mercatorToLngLat(
										this.mercatorCenter, this.currentCity);
								if (T && cr) {
									this.centerPoint = T
								}
							}
						},
						zoomTo : function(co, cm) {
							if (typeof co != "number") {
								return
							}
							co = this._getProperZoom(co).zoom;
							if (co == this.zoomLevel) {
								return
							}
							this.lastLevel = this.zoomLevel;
							this.zoomLevel = co;
							var cn;
							if (cm) {
								cn = cm
							} else {
								if (this.getInfoWindow()) {
									cn = this.getInfoWindow().getPosition()
								}
							}
							if (cn) {
								var T = this.pointToPixel(cn, this.lastLevel);
								this._updateCenterPoint(this.width / 2 - T.x,
										this.height / 2 - T.y,
										this.pixelToPoint(T, this.lastLevel),
										true)
							}
							this.dispatchEvent(new a1("onzoomstart"));
							this.dispatchEvent(new a1("onzoomstartcode"))
						},
						setZoom : function(T) {
							this.zoomTo(T)
						},
						zoomIn : function(T) {
							this.zoomTo(this.zoomLevel + 1, T)
						},
						zoomOut : function(T) {
							this.zoomTo(this.zoomLevel - 1, T)
						},
						panTo : function(T, cm) {
							if (!(T instanceof bR)) {
								return
							}
							this.mercatorCenter = this.projection
									.lngLatToMercator(T, this.currentCity);
							if (bR.isInRange(T)) {
								this.centerPoint = new bR(T.lng, T.lat)
							} else {
								this.centerPoint = this.projection
										.mercatorToLngLat(this.mercatorCenter,
												this.currentCity)
							}
						},
						panBy : function(cm, T) {
							cm = Math.round(cm) || 0;
							T = Math.round(T) || 0;
							this._updateCenterPoint(-cm, -T)
						},
						addControl : function(T) {
							if (T && G(T._i)) {
								T._i(this);
								this.dispatchEvent(new a1("onaddcontrol", T))
							}
						},
						removeControl : function(T) {
							if (T && G(T.remove)) {
								T.remove();
								this
										.dispatchEvent(new a1(
												"onremovecontrol", T))
							}
						},
						addContextMenu : function(T) {
							if (T && G(T.initialize)) {
								T.initialize(this);
								this
										.dispatchEvent(new a1(
												"onaddcontextmenu", T))
							}
						},
						removeContextMenu : function(T) {
							if (T && G(T.remove)) {
								this.dispatchEvent(new a1(
										"onremovecontextmenu", T));
								T.remove()
							}
						},
						addOverlay : function(T) {
							if (T && G(T._i)) {
								T._i(this);
								this.dispatchEvent(new a1("onaddoverlay", T))
							}
						},
						removeOverlay : function(T) {
							if (T && G(T.remove)) {
								T.remove();
								this
										.dispatchEvent(new a1(
												"onremoveoverlay", T))
							}
						},
						clearOverlays : function() {
							this.dispatchEvent(new a1("onclearoverlays"))
						},
						addTileLayer : function(T) {
							if (T && G(T.initialize)) {
								T.initialize(this);
								this.dispatchEvent(new a1("onaddtilelayer", T))
							}
						},
						removeTileLayer : function(T) {
							if (T && G(T.remove)) {
								T.remove();
								this.dispatchEvent(new a1("onremovetilelayer",
										T))
							}
						},
						setMapType : function(cm) {
							if (this.mapType === cm) {
								return
							}
							var cn = new a1("onsetmaptype");
							var T = this.mapType;
							cn.preMapType = T;
							this.mapType = this.config.mapType = cm;
							this.projection = this.mapType.getProjection();
							this._updateCenterPoint(0, 0, this.getCenter(),
									true);
							this._checkZoom();
							var co = this._getProperZoom(this.getZoom()).zoom;
							this.zoomTo(co);
							this.dispatchEvent(cn);
							var cn = new a1("onmaptypechange");
							cn.zoomLevel = co;
							cn.mapType = cm;
							this.dispatchEvent(cn)
						},
						setCenter : function(T) {
							var cn = this;
							if (T instanceof bR) {
								cn.panTo(T, {
									noAnimation : true
								})
							} else {
								if (typeof T == "string") {
									var cm = this._getLocal();
									cm.setSearchCompleteCallback(function(co) {
										if (cm.getStatus() == 0
												&& cm._json.result.type == 2) {
											cn.setCenter(co.getPoi(0).point);
											if (BMAP_PERSPECTIVE_MAP
													.getCityName(T)) {
												cn.setCurrentCity(T)
											}
										}
									});
									cm.search(T)
								}
							}
						},
						centerAndZoom : function(T, cn) {
							var cm = this;
							if (typeof T == "string") {
								var cq = cm._getLocal();
								cq
										.setSearchCompleteCallback(function(cr) {
											if (cq.getStatus() == 0
													&& cq._json.result.type == 2) {
												var ct = cr.getPoi(0).point;
												var cs = cn
														|| aj(
																cq._json.content.level,
																cm);
												if (cq._json.content.code == 131) {
													ct.lng = 116.404;
													ct.lat = 39.915
												}
												cm.centerAndZoom(ct, cs);
												if (BMAP_PERSPECTIVE_MAP
														.getCityName(T)) {
													cm.setCurrentCity(T)
												}
											}
										});
								cq.search(T);
								return
							}
							if (!(T instanceof bR) || !cn) {
								return
							}
							cn = cm._getProperZoom(cn).zoom;
							cm.lastLevel = cm.zoomLevel || cn;
							cm.zoomLevel = cn;
							cm.centerPoint = new bR(T.lng, T.lat);
							cm.mercatorCenter = cm.projection.lngLatToMercator(
									cm.centerPoint, cm.currentCity);
							cm.defaultZoomLevel = cm.defaultZoomLevel
									|| cm.zoomLevel;
							cm.defaultCenter = cm.defaultCenter
									|| cm.centerPoint;
							var cp = new a1("onload");
							var co = new a1("onloadcode");
							cp.point = new bR(T.lng, T.lat);
							cp.pixel = cm.pointToPixel(cm.centerPoint,
									cm.zoomLevel);
							cp.zoom = cn;
							if (!cm.loaded) {
								cm.loaded = true;
								cm.dispatchEvent(cp)
							}
							cm.dispatchEvent(co);
							cm.dispatchEvent(new a1("onmoveend"));
							if (cm.lastLevel != cm.zoomLevel) {
								cm.dispatchEvent(new a1("onzoomend"))
							}
						},
						_getLocal : function() {
							if (!this.temp.local) {
								this.temp.local = new aO(1)
							}
							return this.temp.local
						},
						reset : function() {
							this.centerAndZoom(this.defaultCenter,
									this.defaultZoomLevel, true)
						},
						enableDragging : function() {
							this.config.enableDragging = true
						},
						disableDragging : function() {
							this.config.enableDragging = false
						},
						enableInertialDragging : function() {
							this.config.enableInertialDragging = true
						},
						disableInertialDragging : function() {
							this.config.enableInertialDragging = false
						},
						enableScrollWheelZoom : function() {
							this.config.enableWheelZoom = true
						},
						disableScrollWheelZoom : function() {
							this.config.enableWheelZoom = false
						},
						enableContinuousZoom : function() {
							this.config.enableContinuousZoom = true
						},
						disableContinuousZoom : function() {
							this.config.enableContinuousZoom = false
						},
						enableDoubleClickZoom : function() {
							this.config.enableDblclickZoom = true
						},
						disableDoubleClickZoom : function() {
							this.config.enableDblclickZoom = false
						},
						enableKeyboard : function() {
							this.config.enableKeyboard = true
						},
						disableKeyboard : function() {
							this.config.enableKeyboard = false
						},
						enablePinchToZoom : function() {
							this.config.enablePinchToZoom = true
						},
						disablePinchToZoom : function() {
							this.config.enablePinchToZoom = false
						},
						getSize : function() {
							return new av(this.container.clientWidth,
									this.container.clientHeight)
						},
						getCenter : function() {
							return this.centerPoint
						},
						getZoom : function() {
							return this.zoomLevel
						},
						_getProperZoom : function(cn) {
							var cm = this.config.minZoom, T = this.config.maxZoom, co = false;
							if (cn < cm) {
								co = true;
								cn = cm
							}
							if (cn > T) {
								co = true;
								cn = T
							}
							return {
								zoom : cn,
								exceeded : co
							}
						},
						getContainer : function() {
							return this.container
						},
						pointToPixel : function(T, cm) {
							cm = cm || this.getZoom();
							return this.projection.pointToPixel(T, cm,
									this.mercatorCenter, this.getSize(),
									this.currentCity)
						},
						pixelToPoint : function(T, cm) {
							cm = cm || this.getZoom();
							return this.projection.pixelToPoint(T, cm,
									this.mercatorCenter, this.getSize(),
									this.currentCity)
						},
						pointToOverlayPixel : function(T, cn) {
							if (!T) {
								return
							}
							var co = new bR(T.lng, T.lat);
							var cm = this.pointToPixel(co, cn);
							cm.x -= this.offsetX;
							cm.y -= this.offsetY;
							return cm
						},
						overlayPixelToPoint : function(T, cn) {
							if (!T) {
								return
							}
							var cm = new bg(T.x, T.y);
							cm.x += this.offsetX;
							cm.y += this.offsetY;
							return this.pixelToPoint(cm, cn)
						},
						getBounds : function() {
							if (!this.isLoaded()) {
								return new bw()
							}
							var cm = arguments[0] || {}, co = cm.margins
									|| [ 0, 0, 0, 0 ], T = cm.zoom || null, cp = this
									.pixelToPoint({
										x : co[3],
										y : this.height - co[2]
									}, T), cn = this.pixelToPoint({
								x : this.width - co[1],
								y : co[0]
							}, T);
							return new bw(cp, cn)
						},
						isLoaded : function() {
							return !!this.loaded
						},
						_getBestLevel : function(cm, cn) {
							var cq = this.getMapType();
							var cs = cn.margins || [ 10, 10, 10, 10 ], cp = cn.zoomFactor || 0, ct = cs[1]
									+ cs[3], cr = cs[0] + cs[2], T = cq
									.getMinZoom(), cv = cq.getMaxZoom();
							for ( var co = cv; co >= T; co--) {
								var cu = this.getMapType().getZoomUnits(co);
								if (cm.toSpan().lng / cu < this.width - ct
										&& cm.toSpan().lat / cu < this.height
												- cr) {
									break
								}
							}
							co += cp;
							if (co < T) {
								co = T
							}
							if (co > cv) {
								co = cv
							}
							return co
						},
						getViewport : function(cu, cm) {
							var cy = {
								center : this.getCenter(),
								zoom : this.getZoom()
							};
							if (!cu || !cu instanceof bw && cu.length == 0
									|| cu instanceof bw && cu.isEmpty()) {
								return cy
							}
							var cw = [];
							if (cu instanceof bw) {
								cw.push(cu.getNorthEast());
								cw.push(cu.getSouthWest())
							} else {
								cw = cu.slice(0)
							}
							cm = cm || {};
							var cq = [];
							for ( var cr = 0, cp = cw.length; cr < cp; cr++) {
								cq.push(this.projection.lngLatToMercator(
										cw[cr], this.currentCity))
							}
							var cn = new bw();
							for ( var cr = cq.length - 1; cr >= 0; cr--) {
								cn.extend(cq[cr])
							}
							if (cn.isEmpty()) {
								return cy
							}
							var T = cn.getCenter();
							var cx = this._getBestLevel(cn, cm);
							if (cm.margins) {
								var ct = cm.margins, cs = (ct[1] - ct[3]) / 2, cv = (ct[0] - ct[2]) / 2, co = this
										.getMapType().getZoomUnits(cx);
								T.lng = T.lng + co * cs;
								T.lat = T.lat + co * cv
							}
							T = this.projection.mercatorToLngLat(T,
									this.currentCity);
							return {
								center : T,
								zoom : cx
							}
						},
						setViewport : function(cm, cp) {
							var T;
							if (cm && cm.center) {
								T = cm
							} else {
								T = this.getViewport(cm, cp)
							}
							cp = cp || {};
							var cn = cp.delay || 200;
							if (T.zoom == this.zoomLevel
									&& cp.enableAnimation != false) {
								var co = this;
								setTimeout(function() {
									co.panTo(T.center, {
										duration : 210
									})
								}, cn)
							} else {
								this.centerAndZoom(T.center, T.zoom)
							}
						},
						getPanes : function() {
							return this._panes
						},
						getInfoWindow : function() {
							if (this.temp.infoWin && this.temp.infoWin.isOpen()) {
								return this.temp.infoWin
							}
							return null
						},
						getDistance : function(cn, T) {
							if (!cn || !T) {
								return
							}
							var cm = 0;
							cm = aY.getDistanceByLL(cn, T);
							return cm
						},
						getOverlays : function() {
							var co = [], cp = this._overlays, cn = this._customOverlays;
							if (cp) {
								for ( var cm in cp) {
									if (cp[cm] instanceof R) {
										co.push(cp[cm])
									}
								}
							}
							if (cn) {
								for ( var cm = 0, T = cn.length; cm < T; cm++) {
									co.push(cn[cm])
								}
							}
							return co
						},
						getMapType : function() {
							return this.mapType
						},
						_asyncRegister : function() {
							for ( var T = this.temp.registerIndex; T < BMap._register.length; T++) {
								BMap._register[T](this)
							}
							this.temp.registerIndex = T
						},
						setCurrentCity : function(T) {
							this.currentCity = BMAP_PERSPECTIVE_MAP
									.getCityName(T);
							this.cityCode = BMAP_PERSPECTIVE_MAP
									.getCityCode(this.currentCity)
						},
						setDefaultCursor : function(T) {
							this.config.defaultCursor = T;
							if (this.platform) {
								this.platform.style.cursor = this.config.defaultCursor
							}
						},
						getDefaultCursor : function() {
							return this.config.defaultCursor
						},
						setDraggingCursor : function(T) {
							this.config.draggingCursor = T
						},
						getDraggingCursor : function() {
							return this.config.draggingCursor
						},
						highResolutionEnabled : function() {
							return this.config.enableHighResolution
									&& window.devicePixelRatio > 1
						},
						addHotspot : function(cm) {
							if (cm instanceof bY) {
								this._hotspots[cm.guid] = cm;
								cm.initialize(this)
							}
							var T = this;
							cc.load("hotspot", function() {
								T._asyncRegister()
							})
						},
						removeHotspot : function(T) {
							if (this._hotspots[T.guid]) {
								delete this._hotspots[T.guid]
							}
						},
						clearHotspots : function() {
							this._hotspots = {}
						},
						_checkZoom : function() {
							var cm = this.mapType.getMinZoom();
							var cn = this.mapType.getMaxZoom();
							var T = this.config;
							T.minZoom = T.userMinZoom || cm;
							T.maxZoom = T.userMaxZoom || cn;
							if (T.userMinZoom < cm) {
								T.minZoom = cm
							}
							if (T.userMaxZoom > cn) {
								T.maxZoom = cn
							}
						}
					});
	window.BMAP_API_VERSION = "1.2";
	window.BMAP_COORD_LNGLAT = 0;
	window.BMAP_COORD_MERCATOR = 1;
	window.BMAP_SYS_DRAWER = 0;
	window.BMAP_SVG_DRAWER = 1;
	window.BMAP_VML_DRAWER = 2;
	window.BMAP_CANVAS_DRAWER = 3;
	window._addStat = function(cq, cp) {
		if (!cq) {
			return
		}
		cp = cp || {};
		var co = "";
		for ( var cm in cp) {
			co = co + "&" + cm + "=" + encodeURIComponent(cp[cm])
		}
		var cr = function(cs) {
			if (!cs) {
				return
			}
			_addStat._sending = true;
			setTimeout(
					function() {
						_addStat._img.src = "http://api.map.baidu.com/images/blank.gif?"
								+ cs.src
					}, 50)
		};
		var T = function() {
			var cs = _addStat._reqQueue.shift();
			if (cs) {
				cr(cs)
			}
		};
		var cn = (Math.random() * 100000000).toFixed(0);
		if (_addStat._sending) {
			_addStat._reqQueue.push({
				src : "t=" + cn + "&code=" + cq + co
			})
		} else {
			cr({
				src : "t=" + cn + "&code=" + cq + co
			})
		}
		if (!_addStat._binded) {
			aU.on(_addStat._img, "load", function() {
				_addStat._sending = false;
				T()
			});
			aU.on(_addStat._img, "error", function() {
				_addStat._sending = false;
				T()
			});
			_addStat._binded = true
		}
	};
	window._addStat._reqQueue = [];
	window._addStat._img = new Image();
	_addStat(5000);
	function g(co) {
		var T = {
			duration : 1000,
			fps : 30,
			delay : 0,
			transition : al.linear,
			onStop : function() {
			}
		};
		if (co) {
			for ( var cm in co) {
				T[cm] = co[cm]
			}
		}
		this._opts = T;
		if (T.delay) {
			var cn = this;
			setTimeout(function() {
				cn._beginTime = new Date().getTime();
				cn._endTime = cn._beginTime + cn._opts.duration;
				cn._launch()
			}, T.delay)
		} else {
			this._beginTime = new Date().getTime();
			this._endTime = this._beginTime + this._opts.duration;
			this._launch()
		}
	}
	g.prototype._launch = function() {
		var cm = this;
		var T = new Date().getTime();
		if (T >= cm._endTime) {
			if (typeof cm._opts.render == "function") {
				cm._opts.render(cm._opts.transition(1))
			}
			if (typeof cm._opts.finish == "function") {
				cm._opts.finish()
			}
			return
		}
		cm.schedule = cm._opts.transition((T - cm._beginTime)
				/ cm._opts.duration);
		if (typeof cm._opts.render == "function") {
			cm._opts.render(cm.schedule)
		}
		if (!cm.terminative) {
			cm._timer = setTimeout(function() {
				cm._launch()
			}, 1000 / cm._opts.fps)
		}
	};
	g.prototype.stop = function(T) {
		this.terminative = true;
		if (this._timer) {
			clearTimeout(this._timer);
			this._timer = null
		}
		this._opts.onStop(this.schedule);
		if (T) {
			this._endTime = this._beginTime;
			this._launch()
		}
	};
	g.prototype.cancel = function() {
		if (this._timer) {
			clearTimeout(this._timer)
		}
		this._endTime = this._beginTime;
		this.schedule = 0
	};
	var al = {
		linear : function(T) {
			return T
		},
		reverse : function(T) {
			return 1 - T
		},
		easeInQuad : function(T) {
			return T * T
		},
		easeInCubic : function(T) {
			return Math.pow(T, 3)
		},
		easeOutQuad : function(T) {
			return -(T * (T - 2))
		},
		easeOutCubic : function(T) {
			return Math.pow((T - 1), 3) + 1
		},
		easeInOutQuad : function(T) {
			if (T < 0.5) {
				return T * T * 2
			} else {
				return -2 * (T - 2) * T - 1
			}
			return
		},
		easeInOutCubic : function(T) {
			if (T < 0.5) {
				return Math.pow(T, 3) * 4
			} else {
				return Math.pow(T - 1, 3) * 4 + 1
			}
		},
		easeInOutSine : function(T) {
			return (1 - Math.cos(Math.PI * T)) / 2
		}
	};
	var bQ = {
		imgPath : "http://api.map.baidu.com/images/",
		cityNames : {
			"\u5317\u4eac" : "bj",
			"\u4e0a\u6d77" : "sh",
			"\u6df1\u5733" : "sz",
			"\u5e7f\u5dde" : "gz"
		},
		fontFamily : "arial,sans-serif"
	};
	if (aU.browser.firefox) {
		aU.extend(bQ, {
			distCursor : "url(" + bQ.imgPath + "ruler.cur),crosshair",
			defaultCursor : "-moz-grab",
			draggingCursor : "-moz-grabbing"
		});
		if (aU.platform.isWindows) {
			bQ.fontFamily = "arial,simsun,sans-serif"
		}
	} else {
		if (aU.browser.chrome || aU.browser.safari) {
			aU.extend(bQ, {
				distCursor : "url(" + bQ.imgPath + "ruler.cur) 2 6,crosshair",
				defaultCursor : "url(" + bQ.imgPath
						+ "openhand.cur) 8 8,default",
				draggingCursor : "url(" + bQ.imgPath
						+ "closedhand.cur) 8 8,move"
			})
		} else {
			aU.extend(bQ, {
				distCursor : "url(" + bQ.imgPath + "ruler.cur),crosshair",
				defaultCursor : "url(" + bQ.imgPath + "openhand.cur),default",
				draggingCursor : "url(" + bQ.imgPath + "closedhand.cur),move"
			})
		}
	}
	function ak(cn, cm, T) {
		this.id = cn;
		this.bounds = cm;
		this.content = T
	}
	var a8 = {
		undo : 1,
		redo : 2,
		zoom : 4,
		drag : 8,
		move : 16,
		mousewheel : 32,
		toolbarOperation : 64,
		stdMapCtrlDrag : 128,
		dblclick : 256
	};
	function br(cn, T) {
		var cm = cn.style;
		cm.left = T[0] + "px";
		cm.top = T[1] + "px"
	}
	function b8(T) {
		if (aU.browser.ie > 0) {
			T.unselectable = "on";
			T.selectstart = function() {
				return false
			}
		} else {
			T.style.MozUserSelect = "none"
		}
	}
	function v(T) {
		return T && T.parentNode && T.parentNode.nodeType != 11
	}
	function ah(cm, T) {
		aU.dom.insertHTML(cm, "beforeEnd", T);
		return cm.lastChild
	}
	function bG(T) {
		var cm = {
			left : 0,
			top : 0
		};
		while (T && T.offsetParent) {
			cm.left += T.offsetLeft;
			cm.top += T.offsetTop;
			T = T.offsetParent
		}
		return cm
	}
	function aC(T) {
		var T = window.event || T;
		T.stopPropagation ? T.stopPropagation() : T.cancelBubble = true
	}
	function cf(T) {
		var T = window.event || T;
		T.preventDefault ? T.preventDefault() : T.returnValue = false;
		return false
	}
	function b0(T) {
		aC(T);
		return cf(T)
	}
	function ci() {
		var T = document.documentElement, cm = document.body;
		if (T && (T.scrollTop || T.scrollLeft)) {
			return [ T.scrollTop, T.scrollLeft ]
		} else {
			if (cm) {
				return [ cm.scrollTop, cm.scrollLeft ]
			} else {
				return [ 0, 0 ]
			}
		}
	}
	function b5(cm, T) {
		if (!cm || !T) {
			return
		}
		return Math.round(Math.sqrt(Math.pow(cm.x - T.x, 2)
				+ Math.pow(cm.y - T.y, 2)))
	}
	function M(T, cn) {
		var cm = [];
		cn = cn || function(cp) {
			return cp
		};
		for ( var co in T) {
			cm.push(co + "=" + cn(T[co]))
		}
		return cm.join("&")
	}
	function U(cm, T, cn) {
		var co = document.createElement(cm);
		if (cn) {
			co = document.createElementNS(cn, cm)
		}
		return aU.dom.setAttrs(co, T || {})
	}
	function ax(T) {
		if (T.currentStyle) {
			return T.currentStyle
		} else {
			if (T.ownerDocument && T.ownerDocument.defaultView) {
				return T.ownerDocument.defaultView.getComputedStyle(T, null)
			}
		}
	}
	function G(T) {
		return typeof T == "function"
	}
	var bT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	function bD(co) {
		var cm = "";
		var cv, ct, cr = "";
		var cu, cs, cq, cp = "";
		var cn = 0;
		var T = /[^A-Za-z0-9\+\/\=]/g;
		if (!co || T.exec(co)) {
			return co
		}
		co = co.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		do {
			cu = bT.indexOf(co.charAt(cn++));
			cs = bT.indexOf(co.charAt(cn++));
			cq = bT.indexOf(co.charAt(cn++));
			cp = bT.indexOf(co.charAt(cn++));
			cv = (cu << 2) | (cs >> 4);
			ct = ((cs & 15) << 4) | (cq >> 2);
			cr = ((cq & 3) << 6) | cp;
			cm = cm + String.fromCharCode(cv);
			if (cq != 64) {
				cm = cm + String.fromCharCode(ct)
			}
			if (cp != 64) {
				cm = cm + String.fromCharCode(cr)
			}
			cv = ct = cr = "";
			cu = cs = cq = cp = ""
		} while (cn < co.length);
		return cm
	}
	var a1 = aU.lang.Event;
	function ap() {
		return !!(aU.platform.isIphone || aU.platform.isIpad || aU.platform.isAndroid)
	}
	function bx() {
		return !!(aU.platform.isWindows || aU.platform.isMacintosh || aU.platform.isX11)
	}
	var b9 = {
		request : function(cm) {
			var T = U("script", {
				src : cm,
				type : "text/javascript",
				charset : "utf-8"
			});
			if (T.addEventListener) {
				T.addEventListener("load", function(co) {
					var cn = co.target;
					cn.parentNode.removeChild(cn)
				}, false)
			} else {
				if (T.attachEvent) {
					T
							.attachEvent(
									"onreadystatechange",
									function(co) {
										var cn = window.event.srcElement;
										if (cn
												&& (cn.readyState == "loaded" || cn.readyState == "complete")) {
											cn.parentNode.removeChild(cn)
										}
									})
				}
			}
			setTimeout(function() {
				document.getElementsByTagName("head")[0].appendChild(T);
				T = null
			}, 1)
		}
	};
	function cc() {
	}
	aU.object.extend(cc, {
		Request : {
			INITIAL : -1,
			WAITING : 0,
			COMPLETED : 1
		},
		Dependency : {
			control : [],
			marker : [],
			poly : [ "marker" ],
			infowindow : [ "marker" ],
			menu : [],
			oppc : [],
			opmb : [],
			scommon : [],
			local : [ "scommon" ],
			route : [ "scommon" ],
			buslinesearch : [ "route" ],
			hotspot : []
		},
		preLoaded : {},
		Config : {
			_baseUrl : "http://api.map.baidu.com/getmodules?v=1.2",
			_timeout : 5000
		},
		delayFlag : false,
		Module : {
			_modules : {},
			_arrMdls : []
		},
		load : function(cm, co) {
			var T = this.current(cm);
			if (T._status == this.Request.COMPLETED) {
				return
			} else {
				if (T._status == this.Request.INITIAL) {
					this.combine(cm);
					this.pushUniqueMdl(cm);
					var cn = this;
					if (cn.delayFlag == false) {
						cn.delayFlag = true;
						window.setTimeout(function() {
							var cp = cn.Config._baseUrl + "&mod="
									+ cn.Module._arrMdls.join(",");
							b9.request(cp);
							cn.Module._arrMdls.length = 0;
							cn.delayFlag = false
						}, 1)
					}
					T._status = this.Request.WAITING
				}
				T._callbacks.push(co)
			}
		},
		combine : function(T) {
			if (T && this.Dependency[T]) {
				var cn = this.Dependency[T];
				for ( var cm = 0; cm < cn.length; cm++) {
					this.combine(cn[cm]);
					if (!this.Module._modules[cn[cm]]) {
						this.pushUniqueMdl(cn[cm])
					}
				}
			}
		},
		pushUniqueMdl : function(cm) {
			for ( var T = 0; T < this.Module._arrMdls.length; T++) {
				if (this.Module._arrMdls[T] == cm) {
					return
				}
			}
			this.Module._arrMdls.push(cm)
		},
		run : function(cn, cp) {
			var cm = this.current(cn);
			try {
				eval(cp)
			} catch (cq) {
				return
			}
			cm._status = this.Request.COMPLETED;
			for ( var co = 0, T = cm._callbacks.length; co < T; co++) {
				cm._callbacks[co]()
			}
			cm._callbacks.length = 0
		},
		check : function(cm, cn) {
			var T = this;
			T.timeout = setTimeout(function() {
				var co = T.Module._modules[cm]._status;
				if (co != T.Request.COMPLETED) {
					T.remove(cm);
					T.load(cm, cn)
				} else {
					clearTimeout(T.timeout)
				}
			}, T.Config._timeout)
		},
		current : function(cm) {
			var T;
			if (!this.Module._modules[cm]) {
				this.Module._modules[cm] = {};
				this.Module._modules[cm]._status = this.Request.INITIAL;
				this.Module._modules[cm]._callbacks = []
			}
			T = this.Module._modules[cm];
			return T
		},
		remove : function(cm) {
			var T = this.current(cm);
			delete T
		}
	});
	window._jsload = function(T, cm) {
		cc.run(T, cm)
	};
	function bg(T, cm) {
		T = isNaN(T) ? 0 : T;
		cm = isNaN(cm) ? 0 : cm;
		this.x = T;
		this.y = cm
	}
	bg.prototype.equals = function(T) {
		if (!T) {
			return false
		}
		return T.x == this.x && T.y == this.y
	};
	bg.prototype.toString = function() {
		return "Pixel"
	};
	function av(cm, T) {
		this.width = parseFloat(cm) || 0;
		this.height = parseFloat(T) || 0
	}
	av.prototype.equals = function(T) {
		return !!(T && this.width == T.width && this.height == T.height)
	};
	av.prototype.toString = function() {
		return "Size"
	};
	function bY(T, cm) {
		if (!T) {
			return
		}
		this._position = T;
		this.guid = "spot" + (bY.guid++);
		cm = cm || {};
		this._text = cm.text || "";
		this._offsets = cm.offsets ? cm.offsets.slice(0) : [ 5, 5, 5, 5 ];
		this._userData = cm.userData || null;
		this._minZoom = cm.minZoom || null;
		this._maxZoom = cm.maxZoom || null
	}
	bY.guid = 0;
	aU.extend(bY.prototype, {
		initialize : function(T) {
			if (this._minZoom == null) {
				this._minZoom = T.config.minZoom
			}
			if (this._maxZoom == null) {
				this._maxZoom = T.config.maxZoom
			}
		},
		setPosition : function(T) {
			if (T instanceof bR) {
				this._position = T
			}
		},
		getPosition : function() {
			return this._position
		},
		setText : function(T) {
			this._text = T
		},
		getText : function() {
			return this._text
		},
		setUserData : function(T) {
			this._userData = T
		},
		getUserData : function() {
			return this._userData
		}
	});
	function b1() {
		this._map = null;
		this._container;
		this._type = "control";
		this.blockInfoWindow = true;
		this._visible = true
	}
	aU.lang.inherits(b1, aU.lang.Class, "Control");
	aU
			.extend(
					b1.prototype,
					{
						initialize : function(T) {
							this._map = T;
							if (this._container) {
								T.container.appendChild(this._container);
								return this._container
							}
							return
						},
						_i : function(T) {
							if (!this._container && this.initialize
									&& G(this.initialize)) {
								this._container = this.initialize(T)
							}
							this._opts = this._opts || {
								printable : false
							};
							this._setStyle();
							this._setPosition();
							if (this._container) {
								this._container._jsobj = this
							}
						},
						_setStyle : function() {
							var cm = this._container;
							if (cm) {
								var T = cm.style;
								T.position = "absolute";
								T.zIndex = this._cZIndex || "10";
								T.MozUserSelect = "none";
								if (!this._opts.printable) {
									aU.dom.addClass(cm, "BMap_noprint")
								}
								aU.on(cm, "contextmenu", b0)
							}
						},
						remove : function() {
							this._map = null;
							if (!this._container) {
								return
							}
							this._container.parentNode
									&& this._container.parentNode
											.removeChild(this._container);
							this._container._jsobj = null;
							this._container = null
						},
						_render : function() {
							this._container = ah(this._map.container,
									"<div unselectable='on'></div>");
							if (this._visible == false) {
								aU.dom.hide(this._container)
							}
							return this._container
						},
						_setPosition : function() {
							this.setAnchor(this._opts.anchor)
						},
						setAnchor : function(co) {
							if (this.anchorFixed || typeof co != "number"
									|| isNaN(co) || co < BMAP_ANCHOR_TOP_LEFT
									|| co > BMAP_ANCHOR_BOTTOM_RIGHT) {
								co = this.defaultAnchor
							}
							this._opts = this._opts || {
								printable : false
							};
							this._opts.offset = this._opts.offset
									|| this.defaultOffset;
							var cn = this._opts.anchor;
							this._opts.anchor = co;
							if (!this._container) {
								return
							}
							var cq = this._container;
							var T = this._opts.offset.width;
							var cp = this._opts.offset.height;
							cq.style.left = cq.style.top = cq.style.right = cq.style.bottom = "auto";
							switch (co) {
							case BMAP_ANCHOR_TOP_LEFT:
								cq.style.top = cp + "px";
								cq.style.left = T + "px";
								break;
							case BMAP_ANCHOR_TOP_RIGHT:
								cq.style.top = cp + "px";
								cq.style.right = T + "px";
								break;
							case BMAP_ANCHOR_BOTTOM_LEFT:
								cq.style.bottom = cp + "px";
								cq.style.left = T + "px";
								break;
							case BMAP_ANCHOR_BOTTOM_RIGHT:
								cq.style.bottom = cp + "px";
								cq.style.right = T + "px";
								break;
							default:
								break
							}
							var cm = [ "TL", "TR", "BL", "BR" ];
							aU.dom.removeClass(this._container, "anchor"
									+ cm[cn]);
							aU.dom.addClass(this._container, "anchor" + cm[co])
						},
						getAnchor : function() {
							return this._opts.anchor
						},
						setOffset : function(T) {
							if (!(T instanceof av)) {
								return
							}
							this._opts = this._opts || {
								printable : false
							};
							this._opts.offset = new av(T.width, T.height);
							if (!this._container) {
								return
							}
							this.setAnchor(this._opts.anchor)
						},
						getOffset : function() {
							return this._opts.offset
						},
						getDom : function() {
							return this._container
						},
						show : function() {
							if (this._visible == true) {
								return
							}
							this._visible = true;
							if (this._container) {
								aU.dom.show(this._container)
							}
						},
						hide : function() {
							if (this._visible == false) {
								return
							}
							this._visible = false;
							if (this._container) {
								aU.dom.hide(this._container)
							}
						},
						isPrintable : function() {
							return !!this._opts.printable
						},
						isVisible : function() {
							if (!this._container && !this._map) {
								return false
							}
							return !!this._visible
						}
					});
	window.BMAP_ANCHOR_TOP_LEFT = 0;
	window.BMAP_ANCHOR_TOP_RIGHT = 1;
	window.BMAP_ANCHOR_BOTTOM_LEFT = 2;
	window.BMAP_ANCHOR_BOTTOM_RIGHT = 3;
	window.BMAP_NAVIGATION_CONTROL_LARGE = 0;
	window.BMAP_NAVIGATION_CONTROL_SMALL = 1;
	window.BMAP_NAVIGATION_CONTROL_PAN = 2;
	window.BMAP_NAVIGATION_CONTROL_ZOOM = 3;
	function J(T) {
		b1.call(this);
		T = T || {};
		this._opts = {
			printable : false,
			showZoomInfo : true
		};
		aU.object.extend(this._opts, T);
		this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;
		this.defaultOffset = new av(10, 10);
		this.setAnchor(T.anchor);
		this.setType(T.type);
		this._asyncLoadCode()
	}
	aU.lang.inherits(J, b1, "NavigationControl");
	aU.extend(J.prototype, {
		initialize : function(T) {
			this._map = T;
			return this._container
		},
		setType : function(T) {
			if (typeof T == "number" && T >= BMAP_NAVIGATION_CONTROL_LARGE
					&& T <= BMAP_NAVIGATION_CONTROL_ZOOM) {
				this._opts.type = T
			} else {
				this._opts.type = BMAP_NAVIGATION_CONTROL_LARGE
			}
		},
		getType : function() {
			return this._opts.type
		},
		_asyncLoadCode : function() {
			var T = this;
			cc.load("control", function() {
				T._asyncDraw()
			})
		}
	});
	function ad(T) {
		b1.call(this);
		T = T || {};
		this._opts = {
			printable : false
		};
		aU.object.extend(this._opts, T);
		this._copyrightCollection = [];
		this.defaultAnchor = BMAP_ANCHOR_BOTTOM_LEFT;
		this.defaultOffset = new av(5, 2);
		this.setAnchor(T.anchor);
		this._canShow = true;
		this.blockInfoWindow = false;
		this._asyncLoadCode()
	}
	aU.lang.inherits(ad, b1, "CopyrightControl");
	aU.object
			.extend(
					ad.prototype,
					{
						initialize : function(T) {
							this._map = T;
							return this._container
						},
						addCopyright : function(cn) {
							if (!cn || typeof cn.id != "number" || isNaN(cn.id)) {
								return
							}
							var T = {
								bounds : null,
								content : ""
							};
							for ( var cm in cn) {
								T[cm] = cn[cm]
							}
							var co = this.getCopyright(cn.id);
							if (co) {
								for ( var cq in T) {
									co[cq] = T[cq]
								}
							} else {
								this._copyrightCollection.push(T)
							}
						},
						getCopyright : function(cn) {
							for ( var cm = 0, T = this._copyrightCollection.length; cm < T; cm++) {
								if (this._copyrightCollection[cm].id == cn) {
									return this._copyrightCollection[cm]
								}
							}
						},
						getCopyrightCollection : function() {
							return this._copyrightCollection
						},
						removeCopyright : function(cn) {
							for ( var cm = 0, T = this._copyrightCollection.length; cm < T; cm++) {
								if (this._copyrightCollection[cm].id == cn) {
									r = this._copyrightCollection.splice(cm, 1);
									cm--;
									T = this._copyrightCollection.length
								}
							}
						},
						_asyncLoadCode : function() {
							var T = this;
							cc.load("control", function() {
								T._asyncDraw()
							})
						}
					});
	function cl(T) {
		b1.call(this);
		T = T || {};
		this._opts = {
			printable : false
		};
		this._opts = aU.extend(aU.extend(this._opts, {
			size : new av(150, 150),
			padding : 8,
			isOpen : false,
			zoomInterval : 4
		}), T);
		this.defaultAnchor = BMAP_ANCHOR_BOTTOM_RIGHT;
		this.defaultOffset = new av(0, 0);
		this._btnWidth = 15;
		this._btnHeight = 15;
		this.setAnchor(T.anchor);
		this.setSize(this._opts.size);
		this._asyncLoadCode()
	}
	aU.lang.inherits(cl, b1, "OverviewMapControl");
	aU.extend(cl.prototype, {
		initialize : function(T) {
			this._map = T;
			return this._container
		},
		setAnchor : function(T) {
			b1.prototype.setAnchor.call(this, T)
		},
		changeView : function() {
			this.changeView._running = true;
			this._opts.isOpen = !this._opts.isOpen;
			if (!this._container) {
				this.changeView._running = false
			}
		},
		setSize : function(T) {
			if (!(T instanceof av)) {
				T = new av(150, 150)
			}
			T.width = T.width > 0 ? T.width : 150;
			T.height = T.height > 0 ? T.height : 150;
			this._opts.size = T
		},
		getSize : function() {
			return this._opts.size
		},
		isOpen : function() {
			return this._opts.isOpen
		},
		_asyncLoadCode : function() {
			var T = this;
			cc.load("control", function() {
				T._asyncDraw()
			})
		}
	});
	function bt(T) {
		b1.call(this);
		T = T || {};
		this._opts = {
			printable : false
		};
		this._opts = aU.object.extend(aU.object.extend(this._opts, {
			color : "black",
			unit : "metric"
		}), T);
		this.defaultAnchor = BMAP_ANCHOR_BOTTOM_LEFT;
		this.defaultOffset = new av(81, 18);
		this.setAnchor(T.anchor);
		this._units = {
			metric : {
				name : "metric",
				conv : 1,
				incon : 1000,
				u1 : "\u7c73",
				u2 : "\u516c\u91cc"
			},
			us : {
				name : "us",
				conv : 3.2808,
				incon : 5280,
				u1 : "\u82f1\u5c3a",
				u2 : "\u82f1\u91cc"
			}
		};
		if (!this._units[this._opts.unit]) {
			this._opts.unit = "metric"
		}
		this._scaleText = null;
		this._numberArray = {};
		this._asyncLoadCode()
	}
	window.BMAP_UNIT_METRIC = "metric";
	window.BMAP_UNIT_IMPERIAL = "us";
	aU.lang.inherits(bt, b1, "ScaleControl");
	aU.object.extend(bt.prototype, {
		initialize : function(T) {
			this._map = T;
			return this._container
		},
		setColor : function(T) {
			this._opts.color = T + ""
		},
		getColor : function() {
			return this._opts.color
		},
		setUnit : function(T) {
			this._opts.unit = this._units[T] && this._units[T].name
					|| this._opts.unit
		},
		getUnit : function() {
			return this._opts.unit
		},
		_asyncLoadCode : function() {
			var T = this;
			cc.load("control", function() {
				T._asyncDraw()
			})
		}
	});
	function ay(T) {
		b1.call(this);
		T = T || {};
		this._opts = {
			printable : false
		};
		this.defaultAnchor = BMAP_ANCHOR_TOP_RIGHT;
		this.defaultOffset = new av(10, 10);
		this.setAnchor(T.anchor);
		this._opts = aU.object.extend(aU.object.extend(this._opts, {
			offset : this.defaultOffset,
			enableSwitch : true
		}), T);
		this._asyncLoadCode()
	}
	aU.lang.inherits(ay, b1, "MapTypeControl");
	aU.object.extend(ay.prototype, {
		initialize : function(T) {
			this._map = T;
			return this._container
		},
		_asyncLoadCode : function() {
			var T = this;
			cc.load("control", function() {
				T._asyncDraw()
			})
		}
	});
	function cb(cm) {
		aU.lang.Class.call(this);
		this._opts = {
			container : null,
			cursor : "default"
		};
		this._opts = aU.extend(this._opts, cm);
		this._type = "contextmenu";
		this._map = null;
		this._container;
		this._shadow;
		this._left = 0;
		this._top = 0;
		this._items = [];
		this._rItems = [];
		this._dividers = [];
		this.curPixel = null;
		this.curPoint = null;
		this._isOpen = false;
		var T = this;
		cc.load("menu", function() {
			T._draw()
		})
	}
	aU.lang.inherits(cb, aU.lang.Class, "ContextMenu");
	aU.object.extend(cb.prototype, {
		initialize : function(cm, T) {
			this._map = cm;
			this._overlay = T || null
		},
		remove : function() {
			this._map = this._overlay = null
		},
		addItem : function(cn) {
			if (!cn || cn._type != "menuitem" || cn._text == ""
					|| cn._width <= 0) {
				return
			}
			for ( var cm = 0, T = this._items.length; cm < T; cm++) {
				if (this._items[cm] === cn) {
					return
				}
			}
			this._items.push(cn);
			this._rItems.push(cn)
		},
		removeItem : function(cn) {
			if (!cn || cn._type != "menuitem") {
				return
			}
			for ( var cm = 0, T = this._items.length; cm < T; cm++) {
				if (this._items[cm] === cn) {
					this._items[cm].remove();
					this._items.splice(cm, 1);
					T--
				}
			}
			for ( var cm = 0, T = this._rItems.length; cm < T; cm++) {
				if (this._rItems[cm] === cn) {
					this._rItems[cm].remove();
					this._rItems.splice(cm, 1);
					T--
				}
			}
		},
		addSeparator : function() {
			this._items.push({
				_type : "divider",
				_dIndex : this._dividers.length
			});
			this._dividers.push({
				dom : null
			})
		},
		removeSeparator : function(cm) {
			if (!this._dividers[cm]) {
				return
			}
			for ( var cn = 0, T = this._items.length; cn < T; cn++) {
				if (this._items[cn] && this._items[cn]._type == "divider"
						&& this._items[cn]._dIndex == cm) {
					this._items.splice(cn, 1);
					T--
				}
				if (this._items[cn] && this._items[cn]._type == "divider"
						&& this._items[cn]._dIndex > cm) {
					this._items[cn]._dIndex--
				}
			}
			this._dividers.splice(cm, 1)
		},
		getDom : function() {
			return this._container
		},
		show : function() {
			if (this._isOpen == true) {
				return
			}
			this._isOpen = true
		},
		hide : function() {
			if (this._isOpen == false) {
				return
			}
			this._isOpen = false
		},
		setCursor : function(T) {
			if (!T) {
				return
			}
			this._opts.cursor = T
		},
		getItem : function(T) {
			return this._rItems[T]
		}
	});
	function aZ(cn, co, cm) {
		if (!cn || !co || typeof co != "function") {
			return
		}
		aU.lang.Class.call(this);
		this._opts = {
			width : 100,
			id : ""
		};
		cm = cm || {};
		this._opts.width = (cm.width * 1) ? cm.width : 100;
		this._opts.id = cm.id ? cm.id : "";
		this._text = cn + "";
		this._callback = co;
		this._map = null;
		this._type = "menuitem";
		this._contextmenu = null;
		this._container = null;
		this._enabled = true;
		var T = this;
		cc.load("menu", function() {
			T._draw()
		})
	}
	aU.lang.inherits(aZ, aU.lang.Class, "MenuItem");
	aU.object.extend(aZ.prototype, {
		initialize : function(T, cm) {
			this._map = T;
			this._contextmenu = cm
		},
		remove : function() {
			this._contextmenu = null;
			this._map = null
		},
		setText : function(T) {
			if (!T) {
				return
			}
			this._text = T + ""
		},
		getDom : function() {
			return this._container
		},
		enable : function() {
			this._enabled = true
		},
		disable : function() {
			this._enabled = false
		}
	});
	function bw(T, cm) {
		if (T && !cm) {
			cm = T
		}
		this._sw = this._ne = null;
		this._swLng = this._swLat = null;
		this._neLng = this._neLat = null;
		if (T) {
			this._sw = new bR(T.lng, T.lat);
			this._ne = new bR(cm.lng, cm.lat);
			this._swLng = T.lng;
			this._swLat = T.lat;
			this._neLng = cm.lng;
			this._neLat = cm.lat
		}
	}
	aU.object.extend(bw.prototype, {
		isEmpty : function() {
			return (!this._sw || !this._ne)
		},
		equals : function(T) {
			if (!(T instanceof bw) || this.isEmpty()) {
				return false
			}
			return this.getSouthWest().equals(T.getSouthWest())
					&& this.getNorthEast().equals(T.getNorthEast())
		},
		getSouthWest : function() {
			return this._sw
		},
		getNorthEast : function() {
			return this._ne
		},
		containsBounds : function(T) {
			if (!(T instanceof bw) || this.isEmpty() || T.isEmpty()) {
				return false
			}
			return (T._swLng > this._swLng && T._neLng < this._neLng
					&& T._swLat > this._swLat && T._neLat < this._neLat)
		},
		getCenter : function() {
			if (this.isEmpty()) {
				return null
			}
			return new bR((this._swLng + this._neLng) / 2,
					(this._swLat + this._neLat) / 2)
		},
		intersects : function(cn) {
			if (!(cn instanceof bw)) {
				return null
			}
			if (Math.max(cn._swLng, cn._neLng) < Math.min(this._swLng,
					this._neLng)
					|| Math.min(cn._swLng, cn._neLng) > Math.max(this._swLng,
							this._neLng)
					|| Math.max(cn._swLat, cn._neLat) < Math.min(this._swLat,
							this._neLat)
					|| Math.min(cn._swLat, cn._neLat) > Math.max(this._swLat,
							this._neLat)) {
				return null
			}
			var cp = Math.max(this._swLng, cn._swLng);
			var cm = Math.min(this._neLng, cn._neLng);
			var co = Math.max(this._swLat, cn._swLat);
			var T = Math.min(this._neLat, cn._neLat);
			return new bw(new bR(cp, co), new bR(cm, T))
		},
		containsPoint : function(T) {
			if (!(T instanceof bR) || this.isEmpty()) {
				return false
			}
			return (T.lng >= this._swLng && T.lng <= this._neLng
					&& T.lat >= this._swLat && T.lat <= this._neLat)
		},
		extend : function(T) {
			if (!(T instanceof bR)) {
				return
			}
			var cm = T.lng, cn = T.lat;
			if (!this._sw) {
				this._sw = new bR(0, 0)
			}
			if (!this._ne) {
				this._ne = new bR(0, 0)
			}
			if (!this._swLng || this._swLng > cm) {
				this._sw.lng = this._swLng = cm
			}
			if (!this._neLng || this._neLng < cm) {
				this._ne.lng = this._neLng = cm
			}
			if (!this._swLat || this._swLat > cn) {
				this._sw.lat = this._swLat = cn
			}
			if (!this._neLat || this._neLat < cn) {
				this._ne.lat = this._neLat = cn
			}
		},
		toSpan : function() {
			if (this.isEmpty()) {
				return new bR(0, 0)
			}
			return new bR(Math.abs(this._neLng - this._swLng), Math
					.abs(this._neLat - this._swLat))
		},
		toString : function() {
			return "Bounds"
		}
	});
	function bR(T, cm) {
		if (isNaN(T)) {
			T = bD(T);
			T = isNaN(T) ? 0 : T
		}
		if (typeof T == "string") {
			T = parseFloat(T)
		}
		if (isNaN(cm)) {
			cm = bD(cm);
			cm = isNaN(cm) ? 0 : cm
		}
		if (typeof cm == "string") {
			cm = parseFloat(cm)
		}
		this.lng = T;
		this.lat = cm
	}
	bR.isInRange = function(T) {
		return T && T.lng <= 180 && T.lng >= -180 && T.lat <= 74
				&& T.lat >= -74
	};
	var aR = bR.prototype;
	aR.equals = function(T) {
		if (!(T instanceof bR)) {
			return false
		}
		return (this.lat == T.lat && this.lng == T.lng)
	};
	aR.toString = function() {
		return "Point"
	};
	function aY(T) {
		this._mapType = T
	}
	aU.extend(aY,
			{
				EARTHRADIUS : 6370996.81,
				MCBAND : [ 12890594.86, 8362377.87, 5591021, 3481989.83,
						1678043.12, 0 ],
				LLBAND : [ 75, 60, 45, 30, 15, 0 ],
				MC2LL : [
						[ 1.410526172116255e-8, 0.00000898305509648872,
								-1.9939833816331, 200.9824383106796,
								-187.2403703815547, 91.6087516669843,
								-23.38765649603339, 2.57121317296198,
								-0.03801003308653, 17337981.2 ],
						[ -7.435856389565537e-9, 0.000008983055097726239,
								-0.78625201886289, 96.32687599759846,
								-1.85204757529826, -59.36935905485877,
								47.40033549296737, -16.50741931063887,
								2.28786674699375, 10260144.86 ],
						[ -3.030883460898826e-8, 0.00000898305509983578,
								0.30071316287616, 59.74293618442277,
								7.357984074871, -25.38371002664745,
								13.45380521110908, -3.29883767235584,
								0.32710905363475, 6856817.37 ],
						[ -1.981981304930552e-8, 0.000008983055099779535,
								0.03278182852591, 40.31678527705744,
								0.65659298677277, -4.44255534477492,
								0.85341911805263, 0.12923347998204,
								-0.04625736007561, 4482777.06 ],
						[ 3.09191371068437e-9, 0.000008983055096812155,
								0.00006995724062, 23.10934304144901,
								-0.00023663490511, -0.6321817810242,
								-0.00663494467273, 0.03430082397953,
								-0.00466043876332, 2555164.4 ],
						[ 2.890871144776878e-9, 0.000008983055095805407,
								-3.068298e-8, 7.47137025468032,
								-0.00000353937994, -0.02145144861037,
								-0.00001234426596, 0.00010322952773,
								-0.00000323890364, 826088.5 ] ],
				LL2MC : [
						[ -0.0015702102444, 111320.7020616939,
								1704480524535203, -10338987376042340,
								26112667856603880, -35149669176653700,
								26595700718403920, -10725012454188240,
								1800819912950474, 82.5 ],
						[ 0.0008277824516172526, 111320.7020463578,
								647795574.6671607, -4082003173.641316,
								10774905663.51142, -15171875531.51559,
								12053065338.62167, -5124939663.577472,
								913311935.9512032, 67.5 ],
						[ 0.00337398766765, 111320.7020202162,
								4481351.045890365, -23393751.19931662,
								79682215.47186455, -115964993.2797253,
								97236711.15602145, -43661946.33752821,
								8477230.501135234, 52.5 ],
						[ 0.00220636496208, 111320.7020209128,
								51751.86112841131, 3796837.749470245,
								992013.7397791013, -1221952.21711287,
								1340652.697009075, -620943.6990984312,
								144416.9293806241, 37.5 ],
						[ -0.0003441963504368392, 111320.7020576856,
								278.2353980772752, 2485758.690035394,
								6070.750963243378, 54821.18345352118,
								9540.606633304236, -2710.55326746645,
								1405.483844121726, 22.5 ],
						[ -0.0003218135878613132, 111320.7020701615,
								0.00369383431289, 823725.6402795718,
								0.46104986909093, 2351.343141331292,
								1.58060784298199, 8.77738589078284,
								0.37238884252424, 7.45 ] ],
				getDistanceByMC : function(cq, co) {
					if (typeof (cq) == "undefined"
							|| typeof (co) == "undefined") {
						return 0
					}
					var cm, cp, T, cn;
					cq = this.convertMC2LL(cq);
					if (typeof (cq) == "undefined") {
						return 0
					}
					cm = this.toRadians(cq.lng);
					cp = this.toRadians(cq.lat);
					co = this.convertMC2LL(co);
					if (typeof (co) == "undefined") {
						return 0
					}
					T = this.toRadians(co.lng);
					cn = this.toRadians(co.lat);
					return this.getDistance(cm, T, cp, cn)
				},
				getDistanceByLL : function(cq, co) {
					if (typeof (cq) == "undefined"
							|| typeof (co) == "undefined") {
						return 0
					}
					cq.lng = this.getLoop(cq.lng, -180, 180);
					cq.lat = this.getRange(cq.lat, -74, 74);
					co.lng = this.getLoop(co.lng, -180, 180);
					co.lat = this.getRange(co.lat, -74, 74);
					var cm, T, cp, cn;
					cm = this.toRadians(cq.lng);
					cp = this.toRadians(cq.lat);
					T = this.toRadians(co.lng);
					cn = this.toRadians(co.lat);
					return this.getDistance(cm, T, cp, cn)
				},
				convertMC2LL : function(cm) {
					var cn, cp;
					cn = new bR(Math.abs(cm.lng), Math.abs(cm.lat));
					for ( var co = 0; co < this.MCBAND.length; co++) {
						if (cn.lat >= this.MCBAND[co]) {
							cp = this.MC2LL[co];
							break
						}
					}
					var T = this.convertor(cm, cp);
					var cm = new bR(T.lng.toFixed(6), T.lat.toFixed(6));
					return cm
				},
				convertLL2MC : function(T) {
					var cm, co;
					T.lng = this.getLoop(T.lng, -180, 180);
					T.lat = this.getRange(T.lat, -74, 74);
					cm = new bR(T.lng, T.lat);
					for ( var cn = 0; cn < this.LLBAND.length; cn++) {
						if (cm.lat >= this.LLBAND[cn]) {
							co = this.LL2MC[cn];
							break
						}
					}
					if (!co) {
						for ( var cn = this.LLBAND.length - 1; cn >= 0; cn--) {
							if (cm.lat <= -this.LLBAND[cn]) {
								co = this.LL2MC[cn];
								break
							}
						}
					}
					var cp = this.convertor(T, co);
					var T = new bR(cp.lng.toFixed(2), cp.lat.toFixed(2));
					return T
				},
				convertor : function(cn, co) {
					if (!cn || !co) {
						return
					}
					var T = co[0] + co[1] * Math.abs(cn.lng);
					var cm = Math.abs(cn.lat) / co[9];
					var cp = co[2] + co[3] * cm + co[4] * cm * cm + co[5] * cm
							* cm * cm + co[6] * cm * cm * cm * cm + co[7] * cm
							* cm * cm * cm * cm + co[8] * cm * cm * cm * cm
							* cm * cm;
					T *= (cn.lng < 0 ? -1 : 1);
					cp *= (cn.lat < 0 ? -1 : 1);
					return new bR(T, cp)
				},
				getDistance : function(cm, T, co, cn) {
					return this.EARTHRADIUS
							* Math.acos((Math.sin(co) * Math.sin(cn) + Math
									.cos(co)
									* Math.cos(cn) * Math.cos(T - cm)))
				},
				toRadians : function(T) {
					return Math.PI * T / 180
				},
				toDegrees : function(T) {
					return (180 * T) / Math.PI
				},
				getRange : function(cn, cm, T) {
					if (cm != null) {
						cn = Math.max(cn, cm)
					}
					if (T != null) {
						cn = Math.min(cn, T)
					}
					return cn
				},
				getLoop : function(cn, cm, T) {
					while (cn > T) {
						cn -= T - cm
					}
					while (cn < cm) {
						cn += T - cm
					}
					return cn
				}
			});
	aU.extend(aY.prototype, {
		lngLatToMercator : function(T) {
			return aY.convertLL2MC(T)
		},
		mercatorToLngLat : function(T) {
			return aY.convertMC2LL(T)
		},
		pointToPixel : function(cm, cq, cp, co, cr) {
			if (!cm) {
				return
			}
			cm = this.lngLatToMercator(cm, cr);
			var cn = this.getMapType().getZoomUnits(cq);
			var T = Math.round((cm.lng - cp.lng) / cn + co.width / 2);
			var cs = Math.round((cp.lat - cm.lat) / cn + co.height / 2);
			return new bg(T, cs)
		},
		pixelToPoint : function(T, ct, cp, cn, cm) {
			if (!T) {
				return
			}
			var cs = this.getMapType().getZoomUnits(ct);
			var cq = cp.lng + cs * (T.x - cn.width / 2);
			var co = cp.lat - cs * (T.y - cn.height / 2);
			var cr = new bR(cq, co);
			return this.mercatorToLngLat(cr, cm)
		},
		getMapType : function() {
			return this._mapType
		}
	});
	function cg(T) {
		this._mapType = T
	}
	cg.prototype = new aY();
	aU.extend(cg.prototype, {
		lngLatToMercator : function(cm, T) {
			return this._convert2DTo3D(T, aY.convertLL2MC(cm))
		},
		mercatorToLngLat : function(cm, T) {
			return aY.convertMC2LL(this._convert3DTo2D(T, cm))
		},
		_convert2DTo3D : function(cn, T) {
			var cm = bL.getOMap_pts(cn || "bj", T);
			return new bR(cm.x, cm.y)
		},
		_convert3DTo2D : function(cn, T) {
			var cm = bL.getMapJw_pts(cn || "bj", T);
			return new bR(cm.lng, cm.lat)
		}
	});
	function bL() {
	}
	aU
			.extend(
					bL,
					{
						num : {
							bj : {
								num : Math.sin(Math.PI / 4),
								num2 : Math.sin(Math.PI / 6)
							},
							gz : {
								num : Math.sin(Math.PI / 4),
								num2 : Math.sin(Math.PI / 4)
							},
							sz : {
								num : Math.sin(Math.PI / 4),
								num2 : Math.sin(Math.PI / 4)
							},
							sh : {
								num : Math.sin(Math.PI / 4),
								num2 : Math.sin(Math.PI / 4)
							}
						},
						correct_pts : {
							bj : [ {
								j : 116.305687,
								w : 39.990912,
								utm_x : 12947230.73,
								utm_y : 4836903.65,
								x : 630412,
								y : 547340
							}, {
								j : 116.381837,
								w : 40.000198,
								utm_x : 12955707.8,
								utm_y : 4838247.62,
								x : 667412,
								y : 561832
							}, {
								j : 116.430651,
								w : 39.995216,
								utm_x : 12961141.81,
								utm_y : 4837526.55,
								x : 686556,
								y : 573372
							}, {
								j : 116.474111,
								w : 39.976323,
								utm_x : 12965979.81,
								utm_y : 4834792.55,
								x : 697152,
								y : 586816
							}, {
								j : 116.280328,
								w : 39.953159,
								utm_x : 12944407.75,
								utm_y : 4831441.53,
								x : 603272,
								y : 549976
							}, {
								j : 116.316117,
								w : 39.952496,
								utm_x : 12948391.8,
								utm_y : 4831345.64,
								x : 618504,
								y : 557872
							}, {
								j : 116.350477,
								w : 39.938107,
								utm_x : 12952216.78,
								utm_y : 4829264.65,
								x : 627044,
								y : 568220
							}, {
								j : 116.432025,
								w : 39.947158,
								utm_x : 12961294.76,
								utm_y : 4830573.59,
								x : 666280,
								y : 584016
							}, {
								j : 116.46873,
								w : 39.949516,
								utm_x : 12965380.79,
								utm_y : 4830914.63,
								x : 683328,
								y : 591444
							}, {
								j : 116.280077,
								w : 39.913823,
								utm_x : 12944379.8,
								utm_y : 4825753.62,
								x : 586150,
								y : 558552
							}, {
								j : 116.308625,
								w : 39.91374,
								utm_x : 12947557.79,
								utm_y : 4825741.62,
								x : 598648,
								y : 564732
							}, {
								j : 116.369853,
								w : 39.912979,
								utm_x : 12954373.73,
								utm_y : 4825631.62,
								x : 624561,
								y : 578039
							}, {
								j : 116.433552,
								w : 39.914694,
								utm_x : 12961464.75,
								utm_y : 4825879.53,
								x : 652972,
								y : 591348
							}, {
								j : 116.457034,
								w : 39.914273,
								utm_x : 12964078.78,
								utm_y : 4825818.67,
								x : 663028,
								y : 596444
							}, {
								j : 116.490927,
								w : 39.914127,
								utm_x : 12967851.77,
								utm_y : 4825797.57,
								x : 677968,
								y : 604188
							}, {
								j : 116.483839,
								w : 39.877198,
								utm_x : 12967062.73,
								utm_y : 4820460.67,
								x : 658596,
								y : 610312
							}, {
								j : 116.405777,
								w : 39.864461,
								utm_x : 12958372.82,
								utm_y : 4818620.62,
								x : 619256,
								y : 596088
							}, {
								j : 116.35345,
								w : 39.859774,
								utm_x : 12952547.74,
								utm_y : 4817943.6,
								x : 594633,
								y : 585851
							}, {
								j : 116.403818,
								w : 39.9141,
								utm_x : 12958154.74,
								utm_y : 4825793.66,
								x : 639699,
								y : 585226
							}, {
								j : 116.318111,
								w : 39.891101,
								utm_x : 12948613.78,
								utm_y : 4822469.56,
								x : 592856,
								y : 571480
							}, {
								j : 116.413047,
								w : 39.907238,
								utm_x : 12959182.12,
								utm_y : 4824801.76,
								x : 640680,
								y : 588704
							}, {
								j : 116.390843,
								w : 39.906113,
								utm_x : 12956710.35,
								utm_y : 4824639.16,
								x : 630620,
								y : 584108
							}, {
								j : 116.446527,
								w : 39.899438,
								utm_x : 12962909.14,
								utm_y : 4823674.4,
								x : 651752,
								y : 597416
							}, {
								j : 116.388665,
								w : 39.95527,
								utm_x : 12956467.9,
								utm_y : 4831746.87,
								x : 650656,
								y : 572800
							}, {
								j : 116.398343,
								w : 39.939704,
								utm_x : 12957545.26,
								utm_y : 4829495.6,
								x : 648036,
								y : 578452
							}, {
								j : 116.355101,
								w : 39.973581,
								utm_x : 12952731.53,
								utm_y : 4834395.82,
								x : 643268,
								y : 560944
							}, {
								j : 116.380727,
								w : 39.88464,
								utm_x : 12955584.23,
								utm_y : 4821535.94,
								x : 616920,
								y : 586496
							}, {
								j : 116.360843,
								w : 39.946452,
								utm_x : 12953370.73,
								utm_y : 4830471.48,
								x : 635293,
								y : 568765
							}, {
								j : 116.340955,
								w : 39.973421,
								utm_x : 12951156.79,
								utm_y : 4834372.67,
								x : 638420,
								y : 558632
							}, {
								j : 116.322585,
								w : 40.023941,
								utm_x : 12949111.83,
								utm_y : 4841684.79,
								x : 652135,
								y : 543802
							}, {
								j : 116.356486,
								w : 39.883341,
								utm_x : 12952885.71,
								utm_y : 4821348.24,
								x : 606050,
								y : 581443
							}, {
								j : 116.339592,
								w : 39.992259,
								utm_x : 12951005.06,
								utm_y : 4837098.59,
								x : 645664,
								y : 554400
							}, {
								j : 116.3778,
								w : 39.86392,
								utm_x : 12955258.4,
								utm_y : 4818542.48,
								x : 606848,
								y : 590328
							}, {
								j : 116.377354,
								w : 39.964124,
								utm_x : 12955208.75,
								utm_y : 4833027.64,
								x : 649911,
								y : 568581
							}, {
								j : 116.361837,
								w : 39.963897,
								utm_x : 12953481.39,
								utm_y : 4832994.8,
								x : 643286,
								y : 565175
							}, {
								j : 116.441397,
								w : 39.939403,
								utm_x : 12962338.06,
								utm_y : 4829452.07,
								x : 666772,
								y : 587728
							}, {
								j : 116.359176,
								w : 40.006631,
								utm_x : 12953185.16,
								utm_y : 4839178.78,
								x : 660440,
								y : 555411
							} ],
							sz : [ {
								j : 113.88099,
								w : 22.58884,
								utm_x : 12677311.76,
								utm_y : 2565810.52,
								x : 569078,
								y : 532290
							}, {
								j : 113.902002,
								w : 22.566098,
								utm_x : 12679650.83,
								utm_y : 2563084.58,
								x : 568318,
								y : 545457
							}, {
								j : 113.869843,
								w : 22.577711,
								utm_x : 12676070.87,
								utm_y : 2564476.5,
								x : 561115,
								y : 532494
							}, {
								j : 113.943387,
								w : 22.555192,
								utm_x : 12684257.84,
								utm_y : 2561777.5,
								x : 579437,
								y : 558427
							}, {
								j : 113.899505,
								w : 22.577052,
								utm_x : 12679372.86,
								utm_y : 2564397.51,
								x : 571923,
								y : 540181
							}, {
								j : 113.900376,
								w : 22.596431,
								utm_x : 12679469.82,
								utm_y : 2566720.51,
								x : 580142,
								y : 535463
							}, {
								j : 113.92101,
								w : 22.528931,
								utm_x : 12681766.81,
								utm_y : 2558630.58,
								x : 560296,
								y : 559780
							}, {
								j : 113.919672,
								w : 22.517839,
								utm_x : 12681617.86,
								utm_y : 2557301.57,
								x : 555296,
								y : 562549
							}, {
								j : 113.938716,
								w : 22.505569,
								utm_x : 12683737.86,
								utm_y : 2555831.55,
								x : 557349,
								y : 571072
							}, {
								j : 113.919203,
								w : 22.483494,
								utm_x : 12681565.66,
								utm_y : 2553187.17,
								x : 540853,
								y : 572118
							}, {
								j : 113.942875,
								w : 22.492046,
								utm_x : 12684200.84,
								utm_y : 2554211.57,
								x : 553296,
								y : 575994
							}, {
								j : 113.9567,
								w : 22.530183,
								utm_x : 12685739.85,
								utm_y : 2558780.59,
								x : 573378,
								y : 568442
							}, {
								j : 113.989102,
								w : 22.52697,
								utm_x : 12689346.86,
								utm_y : 2558395.61,
								x : 584796,
								y : 578728
							}, {
								j : 114.015467,
								w : 22.533746,
								utm_x : 12692281.83,
								utm_y : 2559207.53,
								x : 597126,
								y : 584075
							}, {
								j : 113.972977,
								w : 22.55702,
								utm_x : 12687551.81,
								utm_y : 2561996.58,
								x : 591204,
								y : 565924
							}, {
								j : 113.990368,
								w : 22.561133,
								utm_x : 12689487.79,
								utm_y : 2562489.51,
								x : 599240,
								y : 569528
							}, {
								j : 114.143745,
								w : 22.580535,
								utm_x : 12706561.83,
								utm_y : 2564815,
								x : 663830,
								y : 605622
							}, {
								j : 114.150374,
								w : 22.557704,
								utm_x : 12707299.77,
								utm_y : 2562078.56,
								x : 657016,
								y : 613828
							}, {
								j : 114.106905,
								w : 22.541858,
								utm_x : 12702460.77,
								utm_y : 2560179.58,
								x : 634284,
								y : 606528
							}, {
								j : 114.083927,
								w : 22.535065,
								utm_x : 12699902.85,
								utm_y : 2559365.58,
								x : 623132,
								y : 602096
							}, {
								j : 114.049584,
								w : 22.517997,
								utm_x : 12696079.76,
								utm_y : 2557320.5,
								x : 603390,
								y : 597564
							}, {
								j : 114.056304,
								w : 22.542425,
								utm_x : 12696827.84,
								utm_y : 2560247.52,
								x : 615980,
								y : 592534
							}, {
								j : 114.051552,
								w : 22.551321,
								utm_x : 12696298.84,
								utm_y : 2561313.59,
								x : 617887,
								y : 588719
							}, {
								j : 114.096377,
								w : 22.559064,
								utm_x : 12701288.79,
								utm_y : 2562241.55,
								x : 637568,
								y : 598739
							}, {
								j : 114.135858,
								w : 22.575851,
								utm_x : 12705683.84,
								utm_y : 2564253.55,
								x : 659024,
								y : 604806
							}, {
								j : 114.092029,
								w : 22.575592,
								utm_x : 12700804.77,
								utm_y : 2564222.51,
								x : 642776,
								y : 592932
							}, {
								j : 114.054795,
								w : 22.570617,
								utm_x : 12696659.85,
								utm_y : 2563626.21,
								x : 626988,
								y : 584142
							}, {
								j : 114.03075,
								w : 22.553687,
								utm_x : 12693983.15,
								utm_y : 2561597.14,
								x : 611068,
								y : 582552
							}, {
								j : 114.074153,
								w : 22.554124,
								utm_x : 12698814.8,
								utm_y : 2561649.51,
								x : 627380,
								y : 594008
							}, {
								j : 113.926721,
								w : 22.546028,
								utm_x : 12682402.56,
								utm_y : 2560679.29,
								x : 569340,
								y : 556468
							}, {
								j : 113.938125,
								w : 22.538296,
								utm_x : 12683672.07,
								utm_y : 2559752.74,
								x : 570548,
								y : 561748
							} ],
							gz : [ {
								j : 113.335098,
								w : 23.147289,
								utm_x : 12616542.68,
								utm_y : 2632892.7,
								x : 1129109,
								y : 1073920
							}, {
								j : 113.320932,
								w : 23.146956,
								utm_x : 12614965.71,
								utm_y : 2632852.62,
								x : 1125620,
								y : 1071640
							}, {
								j : 113.321435,
								w : 23.140119,
								utm_x : 12615021.7,
								utm_y : 2632029.65,
								x : 1124032,
								y : 1072882
							}, {
								j : 113.321471,
								w : 23.119165,
								utm_x : 12615025.71,
								utm_y : 2629507.68,
								x : 1118932,
								y : 1076530
							}, {
								j : 113.340201,
								w : 23.118616,
								utm_x : 12617110.75,
								utm_y : 2629441.61,
								x : 1123238,
								y : 1079667
							}, {
								j : 113.358068,
								w : 23.116323,
								utm_x : 12619099.71,
								utm_y : 2629165.66,
								x : 1126968,
								y : 1083116
							}, {
								j : 113.357529,
								w : 23.131271,
								utm_x : 12619039.71,
								utm_y : 2630964.68,
								x : 1130508,
								y : 1080440
							}, {
								j : 113.365811,
								w : 23.150595,
								utm_x : 12619961.67,
								utm_y : 2633290.66,
								x : 1137205,
								y : 1078567
							}, {
								j : 113.294145,
								w : 23.118467,
								utm_x : 12611983.76,
								utm_y : 2629423.68,
								x : 1112245,
								y : 1072043
							}, {
								j : 113.28615,
								w : 23.121525,
								utm_x : 12611093.75,
								utm_y : 2629791.7,
								x : 1110993,
								y : 1070197
							}, {
								j : 113.307152,
								w : 23.055497,
								utm_x : 12613431.71,
								utm_y : 2621847.21,
								x : 1100144,
								y : 1085123
							}, {
								j : 113.333445,
								w : 23.052687,
								utm_x : 12616358.66,
								utm_y : 2621509.2,
								x : 1105784,
								y : 1089948
							}, {
								j : 113.347476,
								w : 23.048755,
								utm_x : 12617920.6,
								utm_y : 2621036.24,
								x : 1108099,
								y : 1093064
							}, {
								j : 113.385774,
								w : 23.036574,
								utm_x : 12622183.96,
								utm_y : 2619571.12,
								x : 1113850,
								y : 1101834
							}, {
								j : 113.364185,
								w : 22.89798,
								utm_x : 12619780.66,
								utm_y : 2602910.64,
								x : 1073186,
								y : 1123374
							}, {
								j : 113.404577,
								w : 22.906481,
								utm_x : 12624277.13,
								utm_y : 2603932.06,
								x : 1084888,
								y : 1128692
							}, {
								j : 113.430856,
								w : 22.913156,
								utm_x : 12627202.52,
								utm_y : 2604734.12,
								x : 1092892,
								y : 1131761
							}, {
								j : 113.384554,
								w : 22.933021,
								utm_x : 12622048.15,
								utm_y : 2607121.32,
								x : 1086975,
								y : 1120403
							}, {
								j : 113.263566,
								w : 23.146333,
								utm_x : 12608579.68,
								utm_y : 2632777.63,
								x : 1111742,
								y : 1062098
							}, {
								j : 113.239213,
								w : 23.152996,
								utm_x : 12605868.69,
								utm_y : 2633579.69,
								x : 1107616,
								y : 1056740
							}, {
								j : 113.253865,
								w : 23.131628,
								utm_x : 12607499.76,
								utm_y : 2631007.65,
								x : 1105912,
								y : 1062966
							}, {
								j : 113.240767,
								w : 23.088434,
								utm_x : 12606041.68,
								utm_y : 2625809.7,
								x : 1092270,
								y : 1068184
							}, {
								j : 113.279628,
								w : 23.088284,
								utm_x : 12610367.72,
								utm_y : 2625791.65,
								x : 1101412,
								y : 1074883
							}, {
								j : 113.462271,
								w : 23.107058,
								utm_x : 12630699.66,
								utm_y : 2628050.7,
								x : 1148752,
								y : 1101736
							}, {
								j : 113.401618,
								w : 23.052957,
								utm_x : 12623947.73,
								utm_y : 2621541.68,
								x : 1121925,
								y : 1101535
							}, {
								j : 113.422504,
								w : 23.05905,
								utm_x : 12626272.77,
								utm_y : 2622274.61,
								x : 1128470,
								y : 1104049
							}, {
								j : 113.362506,
								w : 23.107149,
								utm_x : 12619593.75,
								utm_y : 2628061.65,
								x : 1125835,
								y : 1085505
							}, {
								j : 113.419629,
								w : 23.143176,
								utm_x : 12625952.73,
								utm_y : 2632397.61,
								x : 1148133,
								y : 1089052
							}, {
								j : 113.23315,
								w : 23.062251,
								utm_x : 12605193.75,
								utm_y : 2622659.67,
								x : 1084184,
								y : 1071368
							}, {
								j : 113.314525,
								w : 23.101412,
								utm_x : 12614252.48,
								utm_y : 2627371.29,
								x : 1113011,
								y : 1078426
							}, {
								j : 113.307947,
								w : 23.131369,
								utm_x : 12613520.21,
								utm_y : 2630976.47,
								x : 1118622,
								y : 1072198
							} ],
							sh : [ {
								j : 121.524411,
								w : 31.245875,
								utm_x : 13528182.75,
								utm_y : 3642354.51,
								x : 1086581,
								y : 1065728
							}, {
								j : 121.419229,
								w : 31.244887,
								utm_x : 13516473.81,
								utm_y : 3642226.51,
								x : 1032616,
								y : 1029148
							}, {
								j : 121.405637,
								w : 31.237871,
								utm_x : 13514960.74,
								utm_y : 3641317.54,
								x : 1022724,
								y : 1027244
							}, {
								j : 121.415348,
								w : 31.222879,
								utm_x : 13516041.78,
								utm_y : 3639375.47,
								x : 1018548,
								y : 1036980
							}, {
								j : 121.422561,
								w : 31.224261,
								utm_x : 13516844.73,
								utm_y : 3639554.48,
								x : 1022976,
								y : 1038908
							}, {
								j : 121.412581,
								w : 31.204148,
								utm_x : 13515733.75,
								utm_y : 3636949.48,
								x : 1006568,
								y : 1043696
							}, {
								j : 121.443025,
								w : 31.206202,
								utm_x : 13519122.8,
								utm_y : 3637215.49,
								x : 1022656,
								y : 1053704
							}, {
								j : 121.524061,
								w : 31.246917,
								utm_x : 13528143.79,
								utm_y : 3642489.52,
								x : 1082052,
								y : 1064124
							}, {
								j : 121.529343,
								w : 31.217769,
								utm_x : 13528731.78,
								utm_y : 3638713.59,
								x : 1072696,
								y : 1079064
							}, {
								j : 121.530268,
								w : 31.210341,
								utm_x : 13528834.75,
								utm_y : 3637751.53,
								x : 1068748,
								y : 1082416
							}, {
								j : 121.511601,
								w : 31.227303,
								utm_x : 13526756.73,
								utm_y : 3639948.53,
								x : 1069276,
								y : 1068716
							}, {
								j : 121.4966,
								w : 31.243614,
								utm_x : 13525086.81,
								utm_y : 3642061.58,
								x : 1071220,
								y : 1056805
							}, {
								j : 121.485021,
								w : 31.26138,
								utm_x : 13523797.82,
								utm_y : 3644363.54,
								x : 1075708,
								y : 1045540
							}, {
								j : 121.465114,
								w : 31.278803,
								utm_x : 13521581.76,
								utm_y : 3646621.48,
								x : 1073740,
								y : 1031268
							}, {
								j : 121.454784,
								w : 31.266566,
								utm_x : 13520431.82,
								utm_y : 3645035.58,
								x : 1063591,
								y : 1033191
							}, {
								j : 121.46851,
								w : 31.24951,
								utm_x : 13521959.81,
								utm_y : 3642825.48,
								x : 1060200,
								y : 1044520
							}, {
								j : 121.446384,
								w : 31.248422,
								utm_x : 13519496.73,
								utm_y : 3642684.51,
								x : 1048784,
								y : 1037750
							}, {
								j : 121.509499,
								w : 31.246469,
								utm_x : 13526522.73,
								utm_y : 3642431.47,
								x : 1079309,
								y : 1060105
							}, {
								j : 121.481643,
								w : 31.283943,
								utm_x : 13523421.78,
								utm_y : 3647287.68,
								x : 1087096,
								y : 1035304
							}, {
								j : 121.508054,
								w : 31.280609,
								utm_x : 13526361.87,
								utm_y : 3646855.56,
								x : 1098432,
								y : 1045648
							}, {
								j : 121.493854,
								w : 31.19121,
								utm_x : 13524781.12,
								utm_y : 3635274.07,
								x : 1039624,
								y : 1077288
							}, {
								j : 121.500079,
								w : 31.185541,
								utm_x : 13525474.09,
								utm_y : 3634540.04,
								x : 1039960,
								y : 1081640
							}, {
								j : 121.484482,
								w : 31.202846,
								utm_x : 13523737.82,
								utm_y : 3636780.87,
								x : 1041388,
								y : 1069232
							}, {
								j : 121.480877,
								w : 31.189587,
								utm_x : 13523336.51,
								utm_y : 3635063.92,
								x : 1032484,
								y : 1073640
							}, {
								j : 121.502652,
								w : 31.195209,
								utm_x : 13525760.52,
								utm_y : 3635791.9,
								x : 1046384,
								y : 1078728
							} ]
						},
						getLnglatIndex : function(co, cs, cr) {
							var cn = 0;
							var cm = 0;
							var ct = 10000000, cq = 1000000000;
							for ( var cp = 0; cp < this.correct_pts[co].length; cp++) {
								var T = this.getDis(this.correct_pts[co][cp].x,
										this.correct_pts[co][cp].y, cs, cr);
								if (T < cq) {
									if (T < ct) {
										cq = ct;
										ct = T;
										cm = cn;
										cn = cp
									} else {
										sedMinDis = T;
										cm = cp
									}
								}
							}
							return {
								lt : cn,
								rb : cm
							}
						},
						getOMapIndex_mm : function(co, ct, cs) {
							var cn = 0;
							var cm = 0;
							var cr = 1294723000, cq = 1294723000;
							for ( var cp = 0; cp < this.correct_pts[co].length; cp++) {
								var T = this.getDis(
										this.correct_pts[co][cp].utm_x,
										this.correct_pts[co][cp].utm_y, ct, cs);
								if (T < cq) {
									if (T < cr) {
										cq = cr;
										cr = T;
										cm = cn;
										cn = cp
									} else {
										sedMinDis = T;
										cm = cp
									}
								}
							}
							return {
								lt : cn,
								rb : cm
							}
						},
						getDis : function(T, co, cm, cn) {
							return Math.abs(T - cm) + Math.abs(co - cn)
						},
						toMap : function(co, T, cp) {
							var cm = (T - cp) * this.num[co].num;
							var cn = (T + cp) * this.num[co].num
									* this.num[co].num2;
							return {
								x : cm,
								y : cn
							}
						},
						fromMap : function(co, T, cp) {
							cp = cp / this.num[co].num2;
							var cm = (T + cp) / (this.num[co].num * 2);
							var cn = (cp - T) / (this.num[co].num * 2);
							return {
								x : cm,
								y : cn
							}
						},
						getDgPix_mm : function(cp, cu, cq) {
							var ct = this.fromMap(cp,
									this.correct_pts[cp][cu].x,
									this.correct_pts[cp][cu].y);
							var cr = this.fromMap(cp,
									this.correct_pts[cp][cq].x,
									this.correct_pts[cp][cq].y);
							var cz = ct.x, cm = ct.y;
							var cy = cr.x, T = cr.y;
							var cw = this.correct_pts[cp][cu].utm_x, co = this.correct_pts[cp][cu].utm_y;
							var cs = this.correct_pts[cp][cq].utm_x, cn = this.correct_pts[cp][cq].utm_y;
							var cx = Math.abs((cs - cw) * 100000 / (cy - cz));
							var cv = Math.abs((cn - co) * 100000 / (T - cm));
							return {
								j : cx,
								w : cv,
								x : 100000 / cx,
								y : 100000 / cv
							}
						},
						getPx_mm : function(cC, cy, cx, cp, co) {
							var cn = this.correct_pts[cC][cp];
							var T = this.correct_pts[cC][cp];
							var cv = this.getDgPix_mm(cC, cp, co);
							var cr = this.fromMap(cC, cn.x, cn.y);
							var cq = T.utm_x, cE = T.utm_y;
							var cD = cy, cw = cx;
							var cB = cr.x;
							var cm = cr.y;
							var ct = cD - cq, cA = cw - cE;
							var cu = ct * cv.x + cB;
							var cs = -cA * cv.y + cm;
							var cz = this.toMap(cC, cu, cs);
							return cz
						},
						getJw_mm : function(cA, cv, cu, cq, cp) {
							var ct = this.correct_pts[cA][cq];
							var cm = this.correct_pts[cA][cq];
							var cw = this.getDgPix_mm(cA, cq, cp);
							var cy = this.fromMap(cA, cv, cu);
							var co = this.fromMap(cA, ct.x, ct.y);
							var cr = cm.utm_x, cB = cm.utm_y;
							var cz = co.x;
							var cn = co.y;
							var cC = cy.x - cz, cx = cn - cy.y;
							var cs = cC / cw.x + cr;
							var T = cx / cw.y + cB;
							return {
								lng : cs,
								lat : T
							}
						},
						getOMap_pts : function(cm, T) {
							return this.getOMap_index(cm, T.lng, T.lat, T.lt,
									T.rb)
						},
						getMapJw_pts : function(cm, T) {
							return this.getMapJw_index(cm, T.lng,
									9998336 - T.lat, T.lt, T.rb)
						},
						getOMap_index : function(cr, cq, cp, T, co) {
							if (!T || !co) {
								var cm = this.getOMapIndex_mm(cr, cq, cp)
							} else {
								var cm = {
									lt : T,
									rb : co
								}
							}
							var cn = this.getPx_mm(cr, cq, cp, cm.lt, cm.rb);
							return {
								x : Math.floor(cn.x),
								y : 9998336 - Math.floor(cn.y),
								lt : cm.lt,
								rb : cm.rb
							}
						},
						getMapJw_index : function(cq, cn, cr, cm, cp) {
							if (!cm || !cp) {
								var co = this.getLnglatIndex(cq, cn, cr)
							} else {
								var co = {
									lt : cm,
									rb : cp
								}
							}
							var T = this.getJw_mm(cq, cn, cr, co.lt, co.rb);
							return {
								lng : T.lng,
								lat : T.lat,
								lt : co.lt,
								rb : co.rb
							}
						}
					});
	function bq() {
		this._type = "overlay"
	}
	aU.lang.inherits(bq, aU.lang.Class, "Overlay");
	bq.getZIndex = function(T) {
		T = T * 1;
		if (!T) {
			return 0
		}
		return (T * -100000) << 1
	};
	aU.extend(bq.prototype, {
		_i : function(T) {
			if (!this.domElement && G(this.initialize)) {
				this.domElement = this.initialize(T);
				if (this.domElement) {
					this.domElement.style.WebkitUserSelect = "none"
				}
			}
			this.draw()
		},
		initialize : function(T) {
			throw "initialize\u65b9\u6cd5\u672a\u5b9e\u73b0"
		},
		draw : function() {
			throw "draw\u65b9\u6cd5\u672a\u5b9e\u73b0"
		},
		remove : function() {
			if (this.domElement && this.domElement.parentNode) {
				this.domElement.parentNode.removeChild(this.domElement)
			}
			this.domElement = null;
			this.dispatchEvent(new a1("onremove"))
		},
		hide : function() {
			if (this.domElement) {
				aU.dom.hide(this.domElement)
			}
		},
		show : function() {
			if (this.domElement) {
				aU.dom.show(this.domElement)
			}
		},
		isVisible : function() {
			if (!this.domElement) {
				return false
			}
			if (this.domElement.style.display == "none"
					|| this.domElement.style.visibility == "hidden") {
				return false
			}
			return true
		}
	});
	BMap.register(function(cm) {
		cm.temp.overlayDiv = cm.overlayDiv = T(cm.platform, 200);
		cm._panes.floatPane = T(cm.temp.overlayDiv, 800);
		cm._panes.markerMouseTarget = T(cm.temp.overlayDiv, 700);
		cm._panes.floatShadow = T(cm.temp.overlayDiv, 600);
		cm._panes.labelPane = T(cm.temp.overlayDiv, 500);
		cm._panes.markerPane = T(cm.temp.overlayDiv, 400);
		cm._panes.mapPane = T(cm.temp.overlayDiv, 200);
		function T(cn, cq) {
			var cp = U("div"), co = cp.style;
			co.position = "absolute";
			co.top = co.left = co.width = co.height = "0";
			co.zIndex = cq;
			cn.appendChild(cp);
			return cp
		}
	});
	function R() {
		aU.lang.Class.call(this);
		bq.call(this);
		this.map = null;
		this._visible = true;
		this.infoWindow = null;
		this._dblclickTime = 0
	}
	aU.lang.inherits(R, bq, "OverlayInternal");
	aU.extend(R.prototype, {
		initialize : function(T) {
			this.map = T;
			aU.lang.Class.call(this, this.guid);
			return null
		},
		getMap : function() {
			return this.map
		},
		draw : function() {
		},
		remove : function() {
			this.map = null;
			aU.lang.decontrol(this.guid);
			bq.prototype.remove.call(this)
		},
		hide : function() {
			if (this._visible == false) {
				return
			}
			this._visible = false
		},
		show : function() {
			if (this._visible == true) {
				return
			}
			this._visible = true
		},
		isVisible : function() {
			if (!this.domElement) {
				return false
			}
			return !!this._visible
		},
		getContainer : function() {
			return this.domElement
		},
		setConfig : function(cm) {
			cm = cm || {};
			for ( var T in cm) {
				this._config[T] = cm[T]
			}
		},
		setZIndex : function(T) {
			this.zIndex = T
		},
		enableMassClear : function() {
			this._config.enableMassClear = true
		},
		disableMassClear : function() {
			this._config.enableMassClear = false
		},
		addContextMenu : function(T) {
			this._menu = T
		},
		removeContextMenu : function(T) {
			this._menu = null
		}
	});
	function b4() {
		this.map = null;
		this._overlays = {};
		this._customOverlays = []
	}
	BMap
			.register(function(cm) {
				var T = new b4();
				T.map = cm;
				cm._overlays = T._overlays;
				cm._customOverlays = T._customOverlays;
				cm.addEventListener("load", function(cn) {
					T.draw(cn)
				});
				cm.addEventListener("moveend", function(cn) {
					T.draw(cn)
				});
				if (aU.browser.ie && aU.browser.ie < 8
						|| document.compatMode == "BackCompat") {
					cm.addEventListener("zoomend", function(cn) {
						setTimeout(function() {
							T.draw(cn)
						}, 20)
					})
				} else {
					cm.addEventListener("zoomend", function(cn) {
						T.draw(cn)
					})
				}
				cm.addEventListener("maptypechange", function(cn) {
					T.draw(cn)
				});
				cm
						.addEventListener(
								"addoverlay",
								function(cr) {
									var co = cr.target;
									if (co instanceof R) {
										if (!T._overlays[co.guid]) {
											T._overlays[co.guid] = co
										}
									} else {
										var cq = false;
										for ( var cp = 0, cn = T._customOverlays.length; cp < cn; cp++) {
											if (T._customOverlays[cp] === co) {
												cq = true;
												break
											}
										}
										if (!cq) {
											T._customOverlays.push(co)
										}
									}
								});
				cm
						.addEventListener(
								"removeoverlay",
								function(cq) {
									var co = cq.target;
									if (co instanceof R) {
										delete T._overlays[co.guid]
									} else {
										for ( var cp = 0, cn = T._customOverlays.length; cp < cn; cp++) {
											if (T._customOverlays[cp] === co) {
												T._customOverlays.splice(cp, 1);
												break
											}
										}
									}
								});
				cm
						.addEventListener(
								"clearoverlays",
								function(cq) {
									this.closeInfoWindow();
									for ( var cp in T._overlays) {
										if (T._overlays[cp]._config.enableMassClear) {
											T._overlays[cp].remove();
											delete T._overlays[cp]
										}
									}
									for ( var co = 0, cn = T._customOverlays.length; co < cn; co++) {
										if (T._customOverlays[co].enableMassClear != false) {
											T._customOverlays[co].remove();
											T._customOverlays[co] = null;
											T._customOverlays.splice(co, 1);
											co--;
											cn--
										}
									}
								});
				cm.addEventListener("infowindowopen", function(co) {
					var cn = this.infoWindow;
					if (cn) {
						aU.dom.hide(cn.popDom);
						aU.dom.hide(cn.shadowDom)
					}
				});
				cm.addEventListener("movestart", function() {
					if (this.getInfoWindow()) {
						this.getInfoWindow()._setOverflow()
					}
				});
				cm.addEventListener("moveend", function() {
					if (this.getInfoWindow()) {
						this.getInfoWindow()._resetOverflow()
					}
				})
			});
	b4.prototype.draw = function(cn) {
		for ( var cm in this._overlays) {
			this._overlays[cm].draw()
		}
		aU.array.each(this._customOverlays, function(co) {
			co.draw()
		});
		if (this.map.temp.infoWin) {
			this.map.temp.infoWin.setPosition()
		}
		if (BMap.DrawerSelector) {
			var T = BMap.DrawerSelector.getDrawer(this.map);
			T.setPalette()
		}
	};
	function ch(T) {
		R.call(this);
		this._config = {
			strokeColor : "#3a6bdb",
			strokeWeight : 5,
			strokeOpacity : 0.65,
			strokeStyle : "solid",
			enableMassClear : true,
			getParseTolerance : null,
			getParseCacheIndex : null,
			enableEditing : false,
			mouseOverTolerance : 15,
			use3DCoords : false,
			clickable : true
		};
		this.setConfig(T);
		if (this._config.strokeWeight <= 0) {
			this._config.strokeWeight = 5
		}
		if (this._config.strokeOpacity < 0 || this._config.strokeOpacity > 1) {
			this._config.strokeOpacity = 0.65
		}
		if (this._config.fillOpacity < 0 || this._config.fillOpacity > 1) {
			this._config.fillOpacity = 0.65
		}
		if (this._config.strokeStyle != "solid"
				&& this._config.strokeStyle != "dashed") {
			this._config.strokeStyle = "solid"
		}
		this.domElement = null;
		this._bounds = new BMap.Bounds(0, 0, 0, 0);
		this._parseCache = [];
		this.vertexMarkers = [];
		this._temp = {}
	}
	aU.lang.inherits(ch, R, "Graph");
	ch.getGraphPoints = function(cm) {
		var T = [];
		if (!cm) {
			return T
		}
		if (typeof cm == "string") {
			var cn = cm.split(";");
			aU.array.each(cn, function(cp) {
				var co = cp.split(",");
				T.push(new bR(co[0], co[1]))
			})
		}
		if (cm.constructor == Array && cm.length > 0) {
			T = cm
		}
		return T
	};
	ch.parseTolerance = [ 0.09, 0.005, 0.0001, 0.00001 ];
	aU.extend(ch.prototype, {
		initialize : function(T) {
			this.map = T;
			return null
		},
		draw : function() {
			return;
			if (!this.domElement) {
				return
			}
			if (this._drawer) {
				this._drawer.setPath(this.domElement, this
						._getDisplayPixels(this.points))
			}
		},
		setPath : function(T) {
			this._parseCache.length = 0;
			this.points = ch.getGraphPoints(T).slice(0);
			this._calcBounds()
		},
		_calcBounds : function() {
			if (!this.points) {
				return
			}
			var T = this;
			T._bounds = new bw();
			aU.array.each(this.points, function(cm) {
				T._bounds.extend(cm)
			})
		},
		getPath : function() {
			return this.points
		},
		setPositionAt : function(cm, T) {
			if (!T || !this.points[cm]) {
				return
			}
			this._parseCache.length = 0;
			this.points[cm] = new bR(T.lng, T.lat);
			this._calcBounds()
		},
		setStrokeColor : function(T) {
			this._config.strokeColor = T
		},
		getStrokeColor : function() {
			return this._config.strokeColor
		},
		setStrokeWeight : function(T) {
			if (T > 0) {
				this._config.strokeWeight = T
			}
		},
		getStrokeWeight : function() {
			return this._config.strokeWeight
		},
		setStrokeOpacity : function(T) {
			if (!T || T > 1 || T < 0) {
				return
			}
			this._config.strokeOpacity = T
		},
		getStrokeOpacity : function() {
			return this._config.strokeOpacity
		},
		setFillOpacity : function(T) {
			if (T > 1 || T < 0) {
				return
			}
			this._config.fillOpacity = T
		},
		getFillOpacity : function() {
			return this._config.fillOpacity
		},
		setStrokeStyle : function(T) {
			if (T != "solid" && T != "dashed") {
				return
			}
			this._config.strokeStyle = T
		},
		getStrokeStyle : function() {
			return this._config.strokeStyle
		},
		setFillColor : function(T) {
			this._config.fillColor = T || ""
		},
		getFillColor : function() {
			return this._config.fillColor
		},
		getBounds : function() {
			return this._bounds
		},
		remove : function() {
			if (this.map) {
				this.map.removeEventListener("onmousemove",
						this._graphMouseEvent)
			}
			R.prototype.remove.call(this);
			this._parseCache.length = 0
		},
		enableEditing : function() {
			this._config.enableEditing = true
		},
		disableEditing : function() {
			this._config.enableEditing = false
		}
	});
	function l(T) {
		R.call(this);
		this.map = null;
		this.domElement = null;
		this._config = {
			width : 0,
			height : 0,
			offset : new av(0, 0),
			opacity : 1,
			background : "transparent",
			lineStroke : 1,
			lineColor : "#000",
			lineStyle : "solid",
			point : null
		};
		this.setConfig(T);
		this.point = this._config.point
	}
	aU.lang.inherits(l, R, "Division");
	aU
			.extend(
					l.prototype,
					{
						_addDom : function() {
							var T = this._config;
							var cn = this.content;
							var cm = [ '<div class="BMap_Division" style="position:absolute;' ];
							cm.push("width:" + T.width + "px;display:block;");
							cm.push("overflow:hidden;");
							if (T.borderColor != "none") {
								cm
										.push("border:" + T.lineStroke + "px "
												+ T.lineStyle + " "
												+ T.lineColor + ";")
							}
							cm.push("opacity:" + T.opacity
									+ "; filter:(opacity=" + T.opacity * 100
									+ ")");
							cm.push("background:" + T.background + ";");
							cm.push('z-index:60;">');
							cm.push(cn);
							cm.push("</div>");
							this.domElement = ah(
									this.map.getPanes().markerMouseTarget, cm
											.join(""))
						},
						initialize : function(T) {
							this.map = T;
							this._addDom();
							if (this.domElement) {
								aU.on(this.domElement, "mousedown",
										function(cm) {
											aC(cm)
										})
							}
							return this.domElement
						},
						draw : function() {
							var T = this.map
									.pointToOverlayPixel(this._config.point);
							this._config.offset = new av(
									-Math.round(this._config.width / 2)
											- Math
													.round(this._config.lineStroke),
									-Math.round(this._config.height / 2)
											- Math
													.round(this._config.lineStroke));
							this.domElement.style.left = T.x
									+ this._config.offset.width + "px";
							this.domElement.style.top = T.y
									+ this._config.offset.height + "px"
						},
						getPosition : function() {
							return this._config.point
						},
						_getPixel : function(T) {
							return this.map.pointToPixel(this.getPosition())
						},
						setPosition : function(T) {
							this._config.point = T;
							this.draw()
						},
						setDimension : function(T, cm) {
							this._config.width = Math.round(T);
							this._config.height = Math.round(cm);
							if (this.domElement) {
								this.domElement.style.width = this._config.width
										+ "px";
								this.domElement.style.height = this._config.height
										+ "px";
								this.draw()
							}
						}
					});
	function K(cm, cn, co) {
		if (!cm || !cn) {
			return
		}
		this.imageUrl = cm;
		this.size = cn;
		var T = new av(Math.floor(cn.width / 2), Math.floor(cn.height / 2));
		var cp = {
			anchor : T,
			imageOffset : new av(0, 0)
		};
		co = co || {};
		aU.extend(cp, co);
		this.anchor = cp.anchor;
		this.imageOffset = cp.imageOffset;
		this.infoWindowAnchor = co.infoWindowAnchor || this.anchor;
		this.printImageUrl = co.printImageUrl || ""
	}
	var bn = K.prototype;
	bn.setImageUrl = function(T) {
		if (!T) {
			return
		}
		this.imageUrl = T
	};
	bn.setPrintImageUrl = function(T) {
		if (!T) {
			return
		}
		this.printImageUrl = T
	};
	bn.setSize = function(T) {
		if (!T) {
			return
		}
		this.size = new av(T.width, T.height)
	};
	bn.setAnchor = function(T) {
		if (!T) {
			return
		}
		this.anchor = new av(T.width, T.height)
	};
	bn.setImageOffset = function(T) {
		if (!T) {
			return
		}
		this.imageOffset = new av(T.width, T.height)
	};
	bn.setInfoWindowAnchor = function(T) {
		if (!T) {
			return
		}
		this.infoWindowAnchor = new av(T.width, T.height)
	};
	bn.toString = function() {
		return "Icon"
	};
	function by(cn, cm) {
		aU.lang.Class.call(this);
		this.content = cn;
		this.map = null;
		this._config = {
			width : 0,
			height : 0,
			maxWidth : 600,
			offset : new av(0, 0),
			title : "",
			maxContent : "",
			enableMaximize : false,
			enableAutoPan : true,
			enableCloseOnClick : true,
			margin : [ 10, 10, 40, 10 ],
			collisions : [ [ 10, 10 ], [ 10, 10 ], [ 10, 10 ], [ 10, 10 ] ],
			ifMaxScene : false,
			onClosing : function() {
				return true
			}
		};
		aU.extend(this._config, cm || {});
		if (this._config.width != 0) {
			if (this._config.width < 220) {
				this._config.width = 220
			}
			if (this._config.width > 730) {
				this._config.width = 730
			}
		}
		if (this._config.height != 0) {
			if (this._config.height < 60) {
				this._config.height = 60
			}
			if (this._config.height > 650) {
				this._config.height = 650
			}
		}
		if (this._config.maxWidth != 0) {
			if (this._config.maxWidth < 220) {
				this._config.maxWidth = 220
			}
			if (this._config.maxWidth > 730) {
				this._config.maxWidth = 730
			}
		}
		this.isWinMax = false;
		this.IMG_PATH = bQ.imgPath;
		this.overlay = null;
		var T = this;
		cc.load("infowindow", function() {
			T._draw()
		})
	}
	aU.lang.inherits(by, aU.lang.Class, "InfoWindow");
	aU.extend(by.prototype, {
		setWidth : function(T) {
			if (!T && T != 0 || isNaN(T) || T < 0) {
				return
			}
			if (T != 0) {
				if (T < 220) {
					T = 220
				}
				if (T > 730) {
					T = 730
				}
			}
			this._config.width = T
		},
		setHeight : function(T) {
			if (!T && T != 0 || isNaN(T) || T < 0) {
				return
			}
			if (T != 0) {
				if (T < 60) {
					T = 60
				}
				if (T > 650) {
					T = 650
				}
			}
			this._config.height = T
		},
		setMaxWidth : function(T) {
			if (!T && T != 0 || isNaN(T) || T < 0) {
				return
			}
			if (T != 0) {
				if (T < 220) {
					T = 220
				}
				if (T > 730) {
					T = 730
				}
			}
			this._config.maxWidth = T
		},
		setTitle : function(T) {
			this._config.title = T || ""
		},
		setContent : function(T) {
			this.content = T || ""
		},
		setMaxContent : function(T) {
			this._config.maxContent = T || ""
		},
		redraw : function() {
		},
		enableAutoPan : function() {
			this._config.enableAutoPan = true
		},
		disableAutoPan : function() {
			this._config.enableAutoPan = false
		},
		enableCloseOnClick : function() {
			this._config.enableCloseOnClick = true
		},
		disableCloseOnClick : function() {
			this._config.enableCloseOnClick = false
		},
		enableMaximize : function() {
			this._config.enableMaximize = true
		},
		disableMaximize : function() {
			this._config.enableMaximize = false
		},
		show : function() {
			this._visible = true
		},
		hide : function() {
			this._visible = false
		},
		close : function() {
			this.hide()
		},
		maximize : function() {
			this.isWinMax = true
		},
		restore : function() {
			this.isWinMax = false
		},
		isVisible : function() {
			return this.isOpen()
		},
		isOpen : function() {
			return false
		},
		getPosition : function() {
			if (this.overlay && this.overlay.getPosition) {
				return this.overlay.getPosition()
			}
		},
		getOffset : function() {
			return this._config.offset
		}
	});
	bj.prototype.openInfoWindow = function(co, T) {
		if (!(co instanceof by) || !(T instanceof bR)) {
			return
		}
		var cm = this.temp;
		if (!cm.marker) {
			var cn = new K(bQ.imgPath + "blank.gif", {
				width : 1,
				height : 1
			});
			cm.marker = new X(T, {
				icon : cn,
				width : 1,
				height : 1,
				offset : new av(0, 0),
				infoWindowOffset : new av(0, 0),
				clickable : false
			});
			cm.marker._fromMap = 1
		} else {
			cm.marker.setPosition(T)
		}
		this.addOverlay(cm.marker);
		cm.marker.openInfoWindow(co)
	};
	bj.prototype.closeInfoWindow = function() {
		var T = this.temp.infoWin || this.temp._infoWin;
		if (T && T.overlay) {
			T.overlay.closeInfoWindow()
		}
	};
	R.prototype.openInfoWindow = function(T) {
		if (this.map) {
			this.map.closeInfoWindow();
			T._visible = true;
			this.map.temp._infoWin = T;
			T.overlay = this;
			aU.lang.Class.call(T, T.guid)
		}
	};
	R.prototype.closeInfoWindow = function() {
		if (this.map && this.map.temp._infoWin) {
			this.map.temp._infoWin._visible = false;
			aU.lang.decontrol(this.map.temp._infoWin.guid);
			this.map.temp._infoWin = null
		}
	};
	function Y(cn, cm) {
		R.call(this);
		this.content = cn;
		this.map = null;
		this.domElement = null;
		this._config = {
			width : 0,
			offset : new av(0, 0),
			styles : {
				backgroundColor : "#fff",
				border : "1px solid #f00",
				padding : "1px",
				whiteSpace : "nowrap",
				font : "12px " + bQ.fontFamily,
				zIndex : "80",
				MozUserSelect : "none"
			},
			position : null,
			enableMassClear : true,
			clickable : true
		};
		cm = cm || {};
		this.setConfig(cm);
		if (this._config.width < 0) {
			this._config.width = 0
		}
		this.point = this._config.position;
		var T = this;
		cc.load("marker", function() {
			T._draw()
		})
	}
	aU.lang.inherits(Y, R, "Label");
	aU.extend(Y.prototype, {
		getPosition : function() {
			if (this._marker) {
				return this._marker.getPosition()
			}
			return this.point
		},
		setPosition : function(T) {
			if (T instanceof bR && !this.getMarker()) {
				this.point = this._config.position = new bR(T.lng, T.lat)
			}
		},
		setContent : function(T) {
			this.content = T
		},
		setOpacity : function(T) {
			if (T >= 0 && T <= 1) {
				this._config.opacity = T
			}
		},
		setOffset : function(T) {
			if (!(T instanceof av)) {
				return
			}
			this._config.offset = new av(T.width, T.height)
		},
		getOffset : function() {
			return this._config.offset
		},
		setStyle : function(T) {
			T = T || {};
			this._config.styles = aU.extend(this._config.styles, T)
		},
		setStyles : function(T) {
			return this.setStyle(T)
		},
		setTitle : function(T) {
			this._config.title = T || ""
		},
		getTitle : function() {
			return this._config.title
		},
		setMarker : function(T) {
			this._marker = T;
			if (T) {
				this.point = this._config.position = T.getPosition()
			} else {
				this.point = this._config.position = null
			}
		},
		getMarker : function() {
			return this._marker || null
		}
	});
	var ai = new K(bQ.imgPath + "marker_red.png", new av(23, 25), {
		anchor : new av(10, 25),
		infoWindowAnchor : new av(10, 0)
	});
	function X(T, cn) {
		R.call(this);
		cn = cn || {};
		this.point = T;
		this.map = null;
		this.domElement = null;
		this.iconDom = null;
		this.siblingElement = null;
		this._config = {
			offset : new av(0, 0),
			icon : null,
			title : "",
			label : null,
			baseZIndex : 0,
			clickable : true,
			zIndexFixed : false,
			isTop : false,
			enableMassClear : true,
			enableDragging : false,
			restrictDraggingArea : false
		};
		this.setConfig(cn);
		if (!cn.icon) {
			this._config.icon = ai
		}
		this._isDragging = false;
		var cm = this;
		cc.load("marker", function() {
			cm._draw()
		})
	}
	X.TOP_ZINDEX = bq.getZIndex(-90) + 1000000;
	X.DRAG_ZINDEX = X.TOP_ZINDEX + 1000000;
	aU.lang.inherits(X, R, "Marker");
	aU.extend(X.prototype, {
		setIcon : function(T) {
			if (T instanceof K) {
				this._config.icon = T
			}
		},
		getIcon : function() {
			return this._config.icon
		},
		setLabel : function(T) {
			this._config.label = T || null
		},
		getLabel : function() {
			return this._config.label
		},
		enableDragging : function() {
			this._config.enableDragging = true
		},
		disableDragging : function() {
			this._config.enableDragging = false
		},
		getPosition : function() {
			return this.point
		},
		setPosition : function(T) {
			if (T instanceof bR) {
				this.point = new bR(T.lng, T.lat)
			}
		},
		setTop : function(cm, T) {
			this._config.isTop = !!cm;
			if (cm) {
				this._addi = T || 0
			}
		},
		setTitle : function(T) {
			this._config.title = T || ""
		},
		getTitle : function() {
			return this._config.title
		},
		setOffset : function(T) {
			if (T instanceof av) {
				this._config.offset = T
			}
		},
		getOffset : function() {
			return this._config.offset
		}
	});
	function bZ(T, cn) {
		ch.call(this, cn);
		cn = cn || {};
		this._config.fillOpacity = cn.fillOpacity ? cn.fillOpacity : 0.65;
		if (cn.fillColor == "") {
			this._config.fillColor = ""
		} else {
			this._config.fillColor = cn.fillColor ? cn.fillColor : "#fff"
		}
		this.setPath(T);
		var cm = this;
		cc.load("poly", function() {
			cm._draw()
		})
	}
	aU.lang.inherits(bZ, ch, "Polygon");
	aU.extend(bZ.prototype, {
		setPath : function(cm, T) {
			this._userPoints = ch.getGraphPoints(cm).slice(0);
			var cn = ch.getGraphPoints(cm).slice(0);
			if (cn.length > 1 && !cn[0].equals(cn[cn.length - 1])) {
				cn.push(new bR(cn[0].lng, cn[0].lat))
			}
			ch.prototype.setPath.call(this, cn, T)
		},
		setPositionAt : function(cm, T) {
			if (!this._userPoints[cm]) {
				return
			}
			this._userPoints[cm] = new bR(T.lng, T.lat);
			this.points[cm] = new bR(T.lng, T.lat);
			if (cm == 0
					&& !this.points[0]
							.equals(this.points[this.points.length - 1])) {
				this.points[this.points.length - 1] = new bR(T.lng, T.lat)
			}
			this._calcBounds()
		},
		getPath : function() {
			var T = this._userPoints;
			if (T.length == 0) {
				T = this.points
			}
			return T
		}
	});
	function f(T, cn) {
		ch.call(this, cn);
		this.setPath(T);
		var cm = this;
		cc.load("poly", function() {
			cm._draw()
		})
	}
	aU.lang.inherits(f, ch, "Polyline");
	function a(cm, T, cn) {
		this.point = cm;
		this.radius = Math.abs(T);
		bZ.call(this, [], cn)
	}
	a.parseTolerance = [ 0.01, 0.0001, 0.00001, 0.000004 ];
	aU.lang.inherits(a, bZ, "Circle");
	aU
			.extend(
					a.prototype,
					{
						initialize : function(T) {
							this.map = T;
							this.points = this._getPerimeterPoints(this.point,
									this.radius);
							this._calcBounds();
							return null
						},
						getCenter : function() {
							return this.point
						},
						setCenter : function(T, cm) {
							if (!T) {
								return
							}
							this.point = T
						},
						getRadius : function() {
							return this.radius
						},
						setRadius : function(T) {
							this.radius = Math.abs(T)
						},
						_getPerimeterPoints : function(T, ct) {
							if (!T || !ct || !this.map) {
								return []
							}
							var cm = this.map;
							var cq = T.lng, co = T.lat;
							var cC = [];
							var cv = ct / 6378800, cs = (Math.PI / 180) * co, cA = (Math.PI / 180)
									* cq;
							for ( var cr = 0; cr < 360; cr += 9) {
								var cp = (Math.PI / 180) * cr, cw = Math
										.asin(Math.sin(cs) * Math.cos(cv)
												+ Math.cos(cs) * Math.sin(cv)
												* Math.cos(cp)), cu = Math
										.atan2(Math.sin(cp) * Math.sin(cv)
												* Math.cos(cs), Math.cos(cv)
												- Math.sin(cs) * Math.sin(cw)), cz = ((cA
										- cu + Math.PI) % (2 * Math.PI))
										- Math.PI, cB = new bR(cz
										* (180 / Math.PI), cw * (180 / Math.PI));
								cC.push(cB)
							}
							var cn = cC[0];
							cC.push(new bR(cn.lng, cn.lat));
							return cC
						}
					});
	function bz(T) {
		this.map = T;
		this.mapTypeLayers = [];
		this.tileLayers = [];
		this.bufferNumber = 300;
		this.realBufferNumber = 0;
		this.mapTiles = {};
		this.bufferTiles = {}
	}
	BMap.register(function(cm) {
		var T = new bz(cm);
		T.initialize()
	});
	aU.extend(bz.prototype, {
		initialize : function() {
			var T = this, cm = T.map;
			cm.addEventListener("loadcode", function() {
				T.loadTiles()
			});
			cm.addEventListener("addtilelayer", function(cn) {
				T.addTileLayer(cn)
			});
			cm.addEventListener("removetilelayer", function(cn) {
				T.removeTileLayer(cn)
			});
			cm.addEventListener("setmaptype", function(cn) {
				T.setMapType(cn)
			});
			cm.addEventListener("zoomstartcode", function(cn) {
				T._zoom(cn)
			})
		},
		loadTiles : function() {
			var T = this;
			if (aU.browser.ie) {
				try {
					document.execCommand("BackgroundImageCache", false, true)
				} catch (cm) {
				}
			}
			if (T.zoomsDiv) {
				aU.dom.hide(T.zoomsDiv)
			}
			if (!this.loaded) {
				T.initMapTypeTiles()
			}
			T.moveGridTiles();
			if (!this.loaded) {
				this.loaded = true;
				cc.load("tile", function() {
					T._asyncLoadTiles()
				})
			}
		},
		initMapTypeTiles : function() {
			var cm = this.map.getMapType();
			var T = cm.getTileLayer();
			var cn = new n();
			aU.extend(cn, T);
			this.mapTypeLayers.push(cn);
			cn.initialize(this.map)
		},
		showTile : function(cq, cp, ct) {
			this.centerPos = cp;
			var cs = this.map.getMapType();
			var cn = this.getTileName(cq, ct);
			var cz = cs.getTileSize();
			var co = (cq[0] * cz) + cp[0];
			var cy = 0;
			if (cs === BMAP_PERSPECTIVE_MAP && this.map.getZoom() == 15) {
				cy = 0.5
			}
			var cm = (cy - 1 - cq[1]) * cz + cp[1];
			var cu = [ co, cm ];
			var cv = this.mapTiles[cn];
			if (cv && cv.img) {
				br(cv.img, cu);
				return
			}
			cv = this.bufferTiles[cn];
			if (cv && cv.img) {
				ct.tilesDiv.insertBefore(cv.img, ct.tilesDiv.lastChild);
				this.mapTiles[cn] = cv;
				br(cv.img, cu);
				return
			}
			var cx = 256 * Math.pow(2, (cs.getMaxZoom() - cq[2]));
			var cw = new bR(cq[0] * cx, cq[1] * cx);
			var cr = new bg(cq[0], cq[1]);
			var T = ct.getTilesUrl(cr, cq[2]);
			cv = new bC(this, T, cu, cq, ct);
			this.mapTiles[cn] = cv
		},
		getTileName : function(T, cm) {
			if (this.map.getMapType() === BMAP_PERSPECTIVE_MAP) {
				return "TILE-" + cm.guid + "-" + this.map.cityCode + "-" + T[0]
						+ "-" + T[1] + "-" + T[2]
			} else {
				return "TILE-" + cm.guid + "-" + T[0] + "-" + T[1] + "-" + T[2]
			}
		},
		hideTile : function(cn) {
			var cm = false;
			var T = cn.img;
			if (T && v(T)) {
				if (cn.loaded) {
					cm = true
				}
				if (T.parentNode) {
					T.parentNode.removeChild(T);
					H(T)
				}
			}
			delete this.mapTiles[cn.name];
			if (!cm) {
				if (T && T.parentNode) {
					T.parentNode.removeChild(T);
					H(T)
				}
				T = null;
				cn.img = null;
				cn.mgr = null;
				cn = null
			}
		},
		moveGridTiles : function() {
			var cL = this.mapTypeLayers;
			var cx = cL.concat(this.tileLayers);
			var cD = cx.length;
			for ( var cF = 0; cF < cD; cF++) {
				var cq = cx[cF];
				if (cq.baseLayer) {
					this.tilesDiv = cq.tilesDiv
				}
				var cR = this.map;
				var cN = cR.getMapType();
				var cS = cN.getProjection();
				var cE = cR.zoomLevel;
				var cH = cR.mercatorCenter;
				this.mapCenterPoint = cH;
				var cv = cN.getZoomUnits(cE);
				var cy = cN.getZoomFactor(cE);
				var cw = Math.ceil(cH.lng / cy);
				var cr = Math.ceil(cH.lat / cy);
				var cC = cN.getTileSize();
				var cp = [ cw, cr, (cH.lng - cw * cy) / cy * cC,
						(cH.lat - cr * cy) / cy * cC ];
				var cM = cp[0] - Math.ceil((cR.width / 2 - cp[2]) / cC);
				var co = cp[1] - Math.ceil((cR.height / 2 - cp[3]) / cC);
				var cI = cp[0] + Math.ceil((cR.width / 2 + cp[2]) / cC);
				var cA = 0;
				if (cN === BMAP_PERSPECTIVE_MAP && cR.getZoom() == 15) {
					cA = 1
				}
				var cz = cp[1] + Math.ceil((cR.height / 2 + cp[3]) / cC) + cA;
				this.areaCenter = new bR(cH.lng, cH.lat);
				var cn = this.mapTiles;
				var cu = -this.areaCenter.lng / cv;
				var ct = this.areaCenter.lat / cv;
				var cP = [ Math.round(cu), Math.round(ct) ];
				var cm = cR.getZoom();
				for ( var cQ in cn) {
					var cT = cn[cQ];
					var cO = cT.info;
					if (cO[2] != cm
							|| (cO[2] == cm && (cM > cO[0] || cI <= cO[0]
									|| co > cO[1] || cz <= cO[1]))) {
						this.hideTile(cT)
					}
				}
				var cs = -cR.offsetX + cR.width / 2;
				var cB = -cR.offsetY + cR.height / 2;
				cq.tilesDiv.style.left = Math.round(cu + cs) - cP[0] + "px";
				cq.tilesDiv.style.top = Math.round(ct + cB) - cP[1] + "px";
				var T = [];
				this.imgTotalNumber = 0;
				for ( var cK = cM; cK < cI; cK++) {
					for ( var cJ = co; cJ < cz; cJ++) {
						T.push([ cK, cJ ]);
						this.imgTotalNumber++
					}
				}
				T.sort((function(cU) {
					return function(cV, cW) {
						return ((0.4 * Math.abs(cV[0] - cU[0]) + 0.6 * Math
								.abs(cV[1] - cU[1])) - (0.4 * Math.abs(cW[0]
								- cU[0]) + 0.6 * Math.abs(cW[1] - cU[1])))
					}
				})([ cp[0] - 1, cp[1] - 1 ]));
				for ( var cK = 0, cG = T.length; cK < cG; cK++) {
					this.showTile([ T[cK][0], T[cK][1], cm ], cP, cq)
				}
			}
			return
		},
		addTileLayer : function(co) {
			var cn = this;
			var T = co.target;
			for ( var cm = 0; cm < cn.tileLayers.length; cm++) {
				if (cn.tileLayers[cm] == T) {
					return
				}
			}
			cn.tileLayers.push(T)
		},
		removeTileLayer : function(cp) {
			var co = this;
			var cm = cp.target;
			for ( var cn = 0, T = co.tileLayers.length; cn < T; cn++) {
				if (cm == co.tileLayers[cn]) {
					co.tileLayers.splice(cn, 1)
				}
			}
		},
		setMapType : function(cq) {
			var cn = this;
			var co = cq.preMapType;
			var cp = this.mapTypeLayers;
			for ( var cm = 0, T = cp.length; cm < T; cm++) {
				cp[cm].remove()
			}
			this.mapTypeLayers = [];
			this.bufferTiles = this.mapTiles = {};
			if (cn.zoomsDiv && cn.zoomsDiv.parentNode) {
				cn.zoomsDiv.parentNode.removeChild(cn.zoomsDiv);
				cn.zoomsDiv.innerHTML = "";
				cn.zoomsDiv = null
			}
			this.initMapTypeTiles();
			this.moveGridTiles()
		},
		_zoom : function(cm) {
			var T = this;
			if (T.zoomsDiv) {
				aU.dom.hide(T.zoomsDiv)
			}
			setTimeout(function() {
				T.moveGridTiles();
				T.map.dispatchEvent(new a1("onzoomend"))
			}, 10)
		}
	});
	function bC(cs, T, cp, cm, co) {
		this.mgr = cs;
		this.position = cp;
		this.name = cs.getTileName(cm, co);
		this.info = cm;
		var ct = U("img");
		b8(ct);
		ct.galleryImg = false;
		var cr = ct.style;
		var cn = cs.map.getMapType();
		cr.position = "absolute";
		cr.border = "none";
		cr.width = cn.getTileSize() + "px";
		cr.height = cn.getTileSize() + "px";
		cr.left = cp[0] + "px";
		cr.top = cp[1] + "px";
		this.img = ct;
		this.src = T;
		if (C) {
			this.img.style.opacity = 0
		}
		var cq = this;
		this.img.onload = function(cz) {
			if (!cq.mgr) {
				return
			}
			var cx = cq.mgr;
			var cA = cx.bufferTiles;
			if (!cA[cq.name]) {
				cx.realBufferNumber++;
				cA[cq.name] = cq
			}
			if (cq.img && !v(cq.img)) {
				if (co.tilesDiv) {
					co.tilesDiv.appendChild(cq.img);
					if (co.isTransparentPng() == true && aU.browser.ie <= 6
							&& aU.browser.ie > 0) {
						var cv = cq.img.style;
						var cw = cv.width;
						var cD = cv.height;
						var cB = 'position:absolute;FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'
								+ cq.src + '",sizingMethod=scale);';
						cv.cssText = cB;
						cv.width = cw;
						cv.height = cD;
						cv.left = cq.position[0] + "px";
						cv.top = cq.position[1] + "px"
					}
				}
			}
			var cC = cx.realBufferNumber - cx.bufferNumber;
			for ( var cu in cA) {
				if (cC <= 0) {
					break
				}
				if (!cx.mapTiles[cu]) {
					cA[cu].mgr = null;
					var cy = cA[cu].img;
					if (cy && cy.parentNode) {
						cy.parentNode.removeChild(cy);
						H(cy)
					}
					cy = null;
					cA[cu].img = null;
					delete cA[cu];
					cx.realBufferNumber--;
					cC--
				}
			}
			cq.loaded = true;
			if (C) {
				new g({
					fps : 20,
					duration : 200,
					render : function(cE) {
						if (cq.img && cq.img.style) {
							cq.img.style.opacity = cE * 1
						}
					},
					finish : function() {
						if (cq.img && cq.img.style) {
							delete cq.img.style.opacity
						}
					}
				})
			}
		};
		this.img.onerror = function(cw) {
			if (!cq.mgr) {
				return
			}
			var cu = cq.mgr;
			cq.error = true;
			var cv = cu.map.getMapType();
			cq.img.src = cv.getErrorImageUrl();
			if (cq.img && !v(cq.img)) {
				co.tilesDiv.appendChild(cq.img)
			}
		};
		if (aU.browser.ie > 0 && aU.browser.ie <= 6
				&& co.isTransparentPng() == true) {
			ct.src = bQ.imgPath + "blank.gif"
		} else {
			ct.src = T
		}
		ct = null
	}
	function H(co) {
		if (!co) {
			return
		}
		var cm = co.attributes, cn, T, cp;
		if (cm) {
			T = cm.length;
			for (cn = 0; cn < T; cn += 1) {
				cp = cm[cn].name;
				if (typeof co[cp] === "function") {
					co[cp] = null
				}
			}
		}
		cm = co.children;
		if (cm) {
			T = cm.length;
			for (cn = 0; cn < T; cn += 1) {
				H(co.children[cn])
			}
		}
	}
	var C = (!aU.browser.ie || aU.browser.ie > 8);
	function n(T) {
		this.opts = T || {};
		this.copyright = this.opts.copyright || null;
		this.transparentPng = this.opts.transparentPng || false;
		this.baseLayer = this.opts.baseLayer || false;
		this.zIndex = this.opts.zIndex || 0;
		this.guid = n._guid++
	}
	n._guid = 0;
	aU.lang.inherits(n, aU.lang.Class, "TileLayer");
	aU.extend(n.prototype, {
		initialize : function(cm) {
			if (this.baseLayer) {
				this.zIndex = -1
			}
			this.map = cm;
			if (!this.tilesDiv) {
				var cn = U("div");
				var T = cn.style;
				T.position = "absolute";
				T.zIndex = this.zIndex;
				T.left = Math.ceil(-cm.offsetX + cm.width / 2) + "px";
				T.top = Math.ceil(-cm.offsetY + cm.height / 2) + "px";
				cm.platform.appendChild(cn);
				this.tilesDiv = cn
			}
		},
		remove : function() {
			if (this.tilesDiv && this.tilesDiv.parentNode) {
				this.tilesDiv.innerHTML = "";
				this.tilesDiv.parentNode.removeChild(this.tilesDiv)
			}
			delete this.tilesDiv
		},
		isTransparentPng : function() {
			return this.transparentPng
		},
		getTilesUrl : function(cm, cn) {
			var T = "";
			if (this.opts.tileUrlTemplate) {
				T = this.opts.tileUrlTemplate.replace(/\{X\}/, cm.x);
				T = T.replace(/\{Y\}/, cm.y);
				T = T.replace(/\{Z\}/, cn)
			}
			return T
		},
		getCopyright : function() {
			return this.copyright
		},
		getMapType : function() {
			return this.mapType || BMAP_NORMAL_MAP
		}
	});
	function ar(T) {
		n.call(this, T);
		this._opts = {};
		T = T || {};
		this._opts = aU.object.extend(this._opts, T);
		if (this._opts.predictDate) {
			if (this._opts.predictDate.weekday < 1
					|| this._opts.predictDate.weekday > 7) {
				this._opts.predictDate = 1
			}
			if (this._opts.predictDate.hour < 0
					|| this._opts.predictDate.hour > 23) {
				this._opts.predictDate.hour = 0
			}
		}
		this._tileUrl = "http://wp{number}.map.baidu.com/traffic/"
	}
	ar.prototype = new n();
	ar.prototype.initialize = function(T) {
		n.prototype.initialize.call(this, T);
		this._map = T
	};
	ar.prototype.isTransparentPng = function() {
		return true
	};
	ar.prototype.getTilesUrl = function(cr, cm) {
		var cs = "";
		if (this._opts.predictDate) {
			cs = "history/" + this._opts.predictDate.weekday + "/"
					+ this._opts.predictDate.hour + "/"
		}
		var cn = this._map, ct = cr.x, co = cr.y, cq = Math.floor(ct / 200), cp = Math
				.floor(co / 200), T = this._tileUrl.replace("{number}", [ Math
				.abs(ct + co) % 4 ])
				+ cs + cm + "/" + cq + "/" + cp + "/" + ct + "_" + co + ".png";
		return T.replace(/-(\d+)/gi, "M$1")
	};
	function b6(T, cm, cn) {
		this._name = T;
		this._layer = cm;
		this._opts = {
			minZoom : 1,
			maxZoom : 18,
			tileSize : 256,
			errorImageUrl : bQ.imgPath + "blank.gif",
			projection : new aY(this)
		};
		cm.baseLayer = true;
		aU.extend(this._opts, cn || {})
	}
	aU.lang.inherits(b6, aU.lang.Class, "MapType");
	aU.extend(b6.prototype, {
		getName : function() {
			return this._name
		},
		getTileLayer : function() {
			return this._layer
		},
		getTileSize : function() {
			return this._opts.tileSize
		},
		getMinZoom : function() {
			return this._opts.minZoom
		},
		getMaxZoom : function() {
			return this._opts.maxZoom
		},
		getProjection : function() {
			return this._opts.projection
		},
		getErrorImageUrl : function() {
			return this._opts.errorImageUrl
		},
		getZoomUnits : function(T) {
			return Math.pow(2, (18 - T))
		},
		getZoomFactor : function(T) {
			return this.getZoomUnits(T) * 256
		}
	});
	var aG = new n();
	aG.tileUrls = [ "http://q1.baidu.com/it/", "http://q2.baidu.com/it/",
			"http://q3.baidu.com/it/", "http://q4.baidu.com/it/",
			"http://q5.baidu.com/it/", "http://q6.baidu.com/it/",
			"http://q7.baidu.com/it/", "http://q8.baidu.com/it/" ];
	aG.getTilesUrl = function(cm, cp) {
		var cq = cm.x;
		var cn = cm.y;
		var co = "44";
		if (this.map.highResolutionEnabled()) {
			co = "41"
		}
		var T = this.tileUrls[Math.abs(cq + cn) % this.tileUrls.length]
				+ "u=x=" + cq + ";y=" + cn + ";z=" + cp + ";v=005;type=web&fm="
				+ co;
		return T.replace(/-(\d+)/gi, "M$1")
	};
	window.BMAP_NORMAL_MAP = new b6("BMAP_NORMAL_MAP", aG);
	var bd = new n();
	bd.tileUrls = [ "http://d0.map.baidu.com/resource/mappic/",
			"http://d1.map.baidu.com/resource/mappic/",
			"http://d2.map.baidu.com/resource/mappic/",
			"http://d3.map.baidu.com/resource/mappic/" ];
	bd.getTilesUrl = function(T, cn) {
		var cp = T.x;
		var cm = T.y;
		var co = Math.pow(2, (20 - cn)) * 256;
		cm = Math.round((9998336 - co * (cm)) / co) - 1;
		url = this.tileUrls[Math.abs(cp + cm) % this.tileUrls.length]
				+ this.map.currentCity + "/" + this.map.cityCode + "/3/lv"
				+ (21 - cn) + "/" + cp + "," + cm + ".jpg";
		return url
	};
	var Z = new cg();
	window.BMAP_PERSPECTIVE_MAP = new b6("BMAP_PERSPECTIVE_MAP", bd, {
		minZoom : 15,
		maxZoom : 20,
		projection : Z
	});
	BMAP_PERSPECTIVE_MAP.getZoomUnits = function(T) {
		return Math.pow(2, (20 - T))
	};
	BMAP_PERSPECTIVE_MAP.getCityName = function(T) {
		if (!T) {
			return ""
		}
		var cm = bQ.cityNames;
		for ( var co in cm) {
			if (T.search(co) > -1) {
				return cm[co]
			}
		}
		return ""
	};
	BMAP_PERSPECTIVE_MAP.getCityCode = function(T) {
		return ({
			bj : 2,
			gz : 1,
			sz : 14,
			sh : 4
		})[T]
	};
	Z._mapType = BMAP_PERSPECTIVE_MAP;
	window.BMAP_POI_TYPE_NORMAL = 0;
	window.BMAP_POI_TYPE_BUSSTOP = 1;
	window.BMAP_POI_TYPE_BUSLINE = 2;
	window.BMAP_POI_TYPE_SUBSTOP = 3;
	window.BMAP_POI_TYPE_SUBLINE = 4;
	var F = 0;
	var a2 = 1;
	var a9 = 0;
	var ba = 1;
	var aS = 0;
	var x = 1;
	var i = 2;
	var ae = {};
	function s(cm, T) {
		aU.lang.Class.call(this);
		this._loc = {};
		this.setLocation(cm);
		this._opts = {
			renderOptions : {
				panel : null,
				map : null,
				autoViewport : true
			},
			onSearchComplete : function() {
			},
			onMarkersSet : function() {
			},
			onInfoHtmlSet : function() {
			},
			onResultsHtmlSet : function() {
			},
			onGetBusListComplete : function() {
			},
			onGetBusLineComplete : function() {
			},
			onBusListHtmlSet : function() {
			},
			onBusLineHtmlSet : function() {
			},
			onPolylinesSet : function() {
			}
		};
		aU.extend(this._opts, T);
		if (typeof T != "undefined" && typeof T.renderOptions != "undefined"
				&& typeof T.renderOptions.autoViewport != "undefined") {
			this._opts.renderOptions.autoViewport = T.renderOptions.autoViewport
		} else {
			this._opts.renderOptions.autoViewport = true
		}
		this._opts.renderOptions.panel = aU.G(this._opts.renderOptions.panel)
	}
	aU.inherits(s, aU.lang.Class);
	aU.extend(s.prototype, {
		getResults : function() {
			if (!this._isMultiKey) {
				return this._results
			} else {
				return this._arrResults
			}
		},
		enableAutoViewport : function() {
			this._opts.renderOptions.autoViewport = true
		},
		disableAutoViewport : function() {
			this._opts.renderOptions.autoViewport = false
		},
		setLocation : function(T) {
			if (!T) {
				return
			}
			this._loc.src = T
		},
		setSearchCompleteCallback : function(T) {
			this._opts.onSearchComplete = T || function() {
			}
		},
		setMarkersSetCallback : function(T) {
			this._opts.onMarkersSet = T || function() {
			}
		},
		setPolylinesSetCallback : function(T) {
			this._opts.onPolylinesSet = T || function() {
			}
		},
		setInfoHtmlSetCallback : function(T) {
			this._opts.onInfoHtmlSet = T || function() {
			}
		},
		setResultsHtmlSetCallback : function(T) {
			this._opts.onResultsHtmlSet = T || function() {
			}
		},
		getStatus : function() {
			return this._status
		}
	});
	var aW = {
		RawDispatcher : {},
		REQ_BASE_URL : "http://api.map.baidu.com/",
		request : function(cm, cs, T, cr) {
			var cn = (Math.random() * 100000).toFixed(0);
			aW.RawDispatcher["_cbk" + cn] = function(ct) {
				T = T || {};
				cm && cm(ct, T);
				delete aW.RawDispatcher["_cbk" + cn]
			};
			cr = cr || "";
			var cp = M(cs, encodeURIComponent), cq = this, co = cq.REQ_BASE_URL
					+ cr
					+ "?"
					+ cp
					+ "&ie=utf-8&oue=1&res=api&callback=BMap.SearchRequestMgr.RawDispatcher._cbk"
					+ cn;
			b9.request(co)
		}
	};
	function be(cm) {
		var cp = false;
		var co = [], cq = {};
		for ( var cn = 0, T = cm.length; cn < T; cn++) {
			if (!cq[cm[cn]]) {
				cq[cm[cn]] = true;
				co.push(cm[cn])
			}
		}
		return co
	}
	function aj(cn, cm) {
		if (cm) {
			var T = Math.min(cm.width / 1100, cm.height / 660);
			cn = Math.round(cn + (Math.log(T) / Math.log(2)))
		}
		if (cn < 1) {
			cn = 1
		}
		if (cn > 18) {
			cn = 18
		}
		return cn
	}
	window.BMAP_STATUS_SUCCESS = 0;
	window.BMAP_STATUS_CITY_LIST = 1;
	window.BMAP_STATUS_UNKNOWN_LOCATION = 2;
	window.BMAP_STATUS_UNKNOWN_ROUTE = 3;
	window.BMAP_STATUS_INVALID_KEY = 4;
	window.BMAP_STATUS_INVALID_REQUEST = 5;
	window.BMAP_STATUS_PERMISSION_DENIED = 6;
	window.BMAP_STATUS_SERVICE_UNAVAILABLE = 7;
	window.BMAP_STATUS_TIMEOUT = 8;
	window.BMAP_ROUTE_TYPE_WALKING = 2;
	window.BMAP_ROUTE_TYPE_DRIVING = 3;
	var b7 = "cur";
	var c = "cen";
	var bV = "s";
	var ac = "bd";
	var bP = "nb";
	var D = "bt";
	var bv = "nav";
	var bh = "walk";
	var bk = "gc";
	var d = "rgc";
	var O = "dec";
	var aD = "bse";
	var e = "nse";
	var E = "bl";
	var a0 = "bsl";
	var au = "bda";
	var o = 2;
	var aP = 4;
	var bf = 7;
	var Q = 11;
	var aA = 12;
	var a3 = 14;
	var aM = 15;
	var ca = 18;
	var q = 20;
	var N = 21;
	var ag = 26;
	var bo = 28;
	var w = 31;
	var bb = 35;
	var bm = 44;
	var am = 45;
	var aL = -1;
	var V = 0;
	var b2 = 1;
	var aQ = 2;
	var z = 3;
	var aE = 0;
	var bi = 1;
	var az = 2;
	var ck = "http://map.baidu.com/";
	var u = "http://api.map.baidu.com/";
	function bA(cq, ct) {
		if (typeof cq != "string" || !cq) {
			return
		}
		var cv = cq.split("|");
		var T;
		var co;
		var cm;
		if (cv.length == 1) {
			T = P(cq)
		} else {
			T = P(cv[2]);
			co = P(cv[0]);
			cm = P(cv[1])
		}
		var cr = {
			type : T.geoType
		};
		if (ct) {
			switch (cr.type) {
			case az:
				var cs = new BMap.Point(T.geo[0][0], T.geo[0][1]);
				var cu = BMap.Projection.convertMC2LL(cs);
				cr.point = cu;
				cr.points = [ cu ];
				break;
			case bi:
				cr.points = [];
				var cw = T.geo[0];
				for ( var cp = 0, cn = cw.length - 1; cp < cn; cp += 2) {
					var cx = new BMap.Point(cw[cp], cw[cp + 1]);
					cx = BMap.Projection.convertMC2LL(cx);
					cr.points.push(cx)
				}
				co = new BMap.Point(co.geo[0][0], co.geo[0][1]);
				cm = new BMap.Point(cm.geo[0][0], cm.geo[0][1]);
				co = BMap.Projection.convertMC2LL(co);
				cm = BMap.Projection.convertMC2LL(cm);
				cr.bounds = new BMap.Bounds(co, cm);
				break;
			default:
				break
			}
		}
		return cr
	}
	function bs(cn) {
		var cm = cn.split(",");
		var T = new BMap.Point(cm[0], cm[1]);
		return BMap.Projection.convertMC2LL(T)
	}
	var an = [ "=", ".", "-", "*" ];
	var bF = 1 << 23;
	function P(ct) {
		var cs = af(ct.charAt(0));
		var cm = ct.substr(1);
		var cv = 0;
		var T = cm.length;
		var cw = [];
		var cq = [];
		var cr = [];
		while (cv < T) {
			if (cm.charAt(cv) == an[0]) {
				if ((T - cv) < 13) {
					return 0
				}
				cr = cd(cm.substr(cv, 13), cw);
				if (cr < 0) {
					return 0
				}
				cv += 13
			} else {
				if (cm.charAt(cv) == ";") {
					cq.push(cw.slice(0));
					cw.length = 0;
					++cv
				} else {
					if ((T - cv) < 8) {
						return 0
					}
					cr = aF(cm.substr(cv, 8), cw);
					if (cr < 0) {
						return 0
					}
					cv += 8
				}
			}
		}
		for ( var cp = 0, cn = cq.length; cp < cn; cp++) {
			for ( var co = 0, cu = cq[cp].length; co < cu; co++) {
				cq[cp][co] /= 100
			}
		}
		return {
			geoType : cs,
			geo : cq
		}
	}
	function af(cm) {
		var T = -1;
		if (cm == an[1]) {
			T = az
		} else {
			if (cm == an[2]) {
				T = bi
			} else {
				if (cm == an[3]) {
					T = aE
				}
			}
		}
		return T
	}
	function cd(co, cm) {
		var T = 0;
		var cq = 0;
		var cp = 0;
		for ( var cn = 0; cn < 6; cn++) {
			cp = W(co.substr(1 + cn, 1));
			if (cp < 0) {
				return -1 - cn
			}
			T += cp << (6 * cn);
			cp = W(co.substr(7 + cn, 1));
			if (cp < 0) {
				return -7 - cn
			}
			cq += cp << (6 * cn)
		}
		cm.push(T);
		cm.push(cq);
		return 0
	}
	function aF(cp, cn) {
		var cm = cn.length;
		if (cm < 2) {
			return -1
		}
		var T = 0;
		var cr = 0;
		var cq = 0;
		for ( var co = 0; co < 4; co++) {
			cq = W(cp.substr(co, 1));
			if (cq < 0) {
				return -1 - co
			}
			T += cq << (6 * co);
			cq = W(cp.substr(4 + co, 1));
			if (cq < 0) {
				return -5 - co
			}
			cr += cq << (6 * co)
		}
		if (T > bF) {
			T = bF - T
		}
		if (cr > bF) {
			cr = bF - cr
		}
		cn.push(cn[cm - 2] + T);
		cn.push(cn[cm - 1] + cr);
		return 0
	}
	function W(cm) {
		var T = cm.charCodeAt(0);
		if (cm >= "A" && cm <= "Z") {
			return T - "A".charCodeAt(0)
		} else {
			if (cm >= "a" && cm <= "z") {
				return (26 + T - "a".charCodeAt(0))
			} else {
				if (cm >= "0" && cm <= "9") {
					return (52 + T - "0".charCodeAt(0))
				} else {
					if (cm == "+") {
						return 62
					} else {
						if (cm == "/") {
							return 63
						}
					}
				}
			}
		}
		return -1
	}
	function aJ(T) {
		if (typeof T == "string") {
			T = parseFloat(T)
		}
		var cm;
		if (!T || T < 0) {
			cm = "0\u7c73"
		} else {
			if (T <= 10) {
				cm = "10\u7c73"
			} else {
				cm = T < 1000 ? Math.round(T / 10) * 10 + "\u7c73" : (T / 1000)
						.toFixed(1)
						+ "\u516c\u91cc"
			}
		}
		if (cm == "1000\u7c73") {
			cm = "1.0\u516c\u91cc"
		}
		return cm
	}
	function j(ct, co) {
		if (!ct || isNaN(ct)) {
			return ""
		}
		var T = "", cm = 60, cp = cm * 24;
		var cn = Math.ceil(ct / cm);
		if (co == "bustime") {
			var cs = cn % 10, cq = parseInt(cn / 10);
			cn = cs != 0 ? (cs > 5 ? (++cq * 10) : cq ? (cq * 10) : 5) : cn
		}
		var cu = parseInt(cn / cp);
		cn %= cp;
		var cr = parseInt(cn / cm);
		cn %= cm;
		if (cu >= 1) {
			T += cu + "\u5929"
		}
		if (cr >= 1) {
			T += cr + "\u5c0f\u65f6"
		}
		if (cn >= 1) {
			if (co && co == "nav" && cu >= 1) {
				return T
			} else {
				T += cn + "\u5206\u949f"
			}
		}
		return T
	}
	function ao(T) {
		var cn = T.getSouthWest();
		var cm = T.getNorthEast();
		return [ cn, cm ]
	}
	BMap.I = window.Instance = aU.lang.instance;
	var aO = function(cn, cm) {
		s.call(this, cn, cm);
		cm = cm || {};
		cm.renderOptions = cm.renderOptions || {};
		this.setPageCapacity(cm.pageCapacity);
		if (typeof cm.renderOptions.selectFirstResult != "undefined"
				&& !cm.renderOptions.selectFirstResult) {
			this.disableFirstResultSelection()
		} else {
			this.enableFirstResultSelection()
		}
		this._overlays = [];
		this._arrPois = [];
		this._curIndex = -1;
		this._queryList = [];
		var T = this;
		cc.load("local", function() {
			T._check()
		})
	};
	aU.inherits(aO, s, "LocalSearch");
	aO.DEFAULT_PAGE_CAPACITY = 10;
	aO.MIN_PAGE_CAPACITY = 1;
	aO.MAX_PAGE_CAPACITY = 50;
	aO.DEFAULT_RADIUS = 2000;
	aO.MAX_RADIUS = 5000;
	aU.extend(aO.prototype, {
		search : function(T) {
			this._queryList.push({
				method : "search",
				arguments : [ T ]
			})
		},
		searchInBounds : function(T, cm) {
			this._queryList.push({
				method : "searchInBounds",
				arguments : [ T, cm ]
			})
		},
		searchNearby : function(cn, cm, T) {
			this._queryList.push({
				method : "searchNearby",
				arguments : [ cn, cm, T ]
			})
		},
		clearResults : function() {
			delete this._json;
			delete this._status;
			delete this._results;
			delete this._ud;
			this._curIndex = -1;
			this._setStatus();
			if (this._opts.renderOptions.panel) {
				this._opts.renderOptions.panel.innerHTML = ""
			}
		},
		gotoPage : function() {
		},
		enableFirstResultSelection : function() {
			this._opts.renderOptions.selectFirstResult = true
		},
		disableFirstResultSelection : function() {
			this._opts.renderOptions.selectFirstResult = false
		},
		setPageCapacity : function(T) {
			if (typeof T == "number" && !isNaN(T)) {
				this._opts.pageCapacity = T < 1 ? aO.DEFAULT_PAGE_CAPACITY
						: (T > aO.MAX_PAGE_CAPACITY ? aO.DEFAULT_PAGE_CAPACITY
								: T)
			} else {
				this._opts.pageCapacity = aO.DEFAULT_PAGE_CAPACITY
			}
		},
		getPageCapacity : function() {
			return this._opts.pageCapacity
		},
		toString : function() {
			return "LocalSearch"
		}
	});
	var bK = function(cm, T) {
		s.call(this, cm, T)
	};
	aU.inherits(bK, s, "BaseRoute");
	aU.extend(bK.prototype, {
		clearResults : function() {
		}
	});
	window.BMAP_TRANSIT_POLICY_LEAST_TIME = 0;
	window.BMAP_TRANSIT_POLICY_LEAST_TRANSFER = 2;
	window.BMAP_TRANSIT_POLICY_LEAST_WALKING = 3;
	window.BMAP_LINE_TYPE_BUS = 0;
	window.BMAP_LINE_TYPE_SUBWAY = 1;
	window.BMAP_LINE_TYPE_FERRY = 2;
	function aH(cn, cm) {
		bK.call(this, cn, cm);
		cm = cm || {};
		this.setPolicy(cm.policy);
		this.setPageCapacity(cm.pageCapacity);
		this.QUERY_TYPE = D;
		this.RETURN_TYPE = a3;
		this.ROUTE_TYPE = a2;
		this._overlays = [];
		this._curIndex = -1;
		this._queryList = [];
		var T = this;
		cc.load("route", function() {
			T._asyncSearch()
		})
	}
	aH.MAX_PAGE_CAPACITY = 100;
	aH.LINE_TYPE_MAPPING = [ 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1 ];
	aU.inherits(aH, bK, "TransitRoute");
	aU.extend(aH.prototype, {
		setPolicy : function(T) {
			if (T >= BMAP_TRANSIT_POLICY_LEAST_TIME
					&& T <= BMAP_TRANSIT_POLICY_LEAST_WALKING) {
				this._opts.policy = T
			} else {
				this._opts.policy = BMAP_TRANSIT_POLICY_LEAST_TIME
			}
		},
		search : function(cm, T) {
			this._queryList.push({
				method : "search",
				arguments : [ cm, T ]
			})
		},
		setPageCapacity : function(T) {
			if (typeof T == "string") {
				T = parseInt(T);
				if (isNaN(T)) {
					this._opts.pageCapacity = aH.MAX_PAGE_CAPACITY;
					return
				}
			}
			if (typeof T != "number") {
				this._opts.pageCapacity = aH.MAX_PAGE_CAPACITY;
				return
			}
			if (T >= 1 && T <= aH.MAX_PAGE_CAPACITY) {
				this._opts.pageCapacity = Math.round(T)
			} else {
				this._opts.pageCapacity = aH.MAX_PAGE_CAPACITY
			}
		},
		toString : function() {
			return "TransitRoute"
		},
		_shortTitle : function(T) {
			return T.replace(/\(.*\)/, "")
		}
	});
	function t(T) {
		this.city = T.city;
		this._start = T.start;
		this._end = T.end;
		this._plans = T.plans;
		this.moreResultsUrl = T.url;
		this.taxiFare = T.taxiFare || null
	}
	aU.extend(t.prototype, {
		getStart : function() {
			return this._start
		},
		getEnd : function() {
			return this._end
		},
		getNumPlans : function() {
			return this._plans.length
		},
		getPlan : function(T) {
			if (this._plans[T]) {
				return this._plans[T]
			}
		}
	});
	function aT(T) {
		t.call(this, T);
		this.policy = T.policy
	}
	aU.inherits(aT, t, "DrivingRouteResult");
	function bE(T) {
		t.call(this, T)
	}
	aU.inherits(bE, t, "WalkingRouteResult");
	function A(T) {
		t.call(this, T);
		this.policy = T.policy
	}
	aU.inherits(A, t, "TransitRouteResult");
	function k(T) {
		this._routes = T.routes.slice(0);
		this._distance = T.distance || 0;
		this._duration = T.duration || 0
	}
	aU.extend(k.prototype, {
		getRoute : function(T) {
			if (this._routes[T]) {
				return this._routes[T]
			}
		},
		getNumRoutes : function() {
			return this._routes.length
		},
		getDistance : function(T) {
			if (T === false) {
				return this._distance
			} else {
				return aJ(this._distance)
			}
		},
		getDuration : function(T) {
			if (T === false) {
				return this._duration
			} else {
				return j(this._duration, "nav")
			}
		}
	});
	function bX(T) {
		k.call(this, T);
		this._lines = T.lines;
		this._description = T.description;
		this._duration = T.duration || 0
	}
	aU.inherits(bX, k, "TransitRoutePlan");
	aU.extend(bX.prototype, {
		getNumLines : function() {
			return this._lines.length
		},
		getLine : function(T) {
			if (this._lines[T]) {
				return this._lines[T]
			}
		},
		getDescription : function(T) {
			if (T === false) {
				return this._description.replace(/<(\/)?b>/g, "")
			} else {
				return this._description
			}
		},
		getDuration : function(T) {
			if (T === false) {
				return this._duration
			} else {
				return j(this._duration, "bustime")
			}
		}
	});
	function bu(T) {
		this._steps = T.steps && T.steps.slice(0) || [];
		this._distance = T.distance || 0;
		this._index = T.index || 0;
		this._points = T.points.slice(0);
		this._planIndex = T.planIndex || 0;
		this._rt = T.rt;
		if (this._distance === 0 && this._points.length > 2) {
			this._points.length = 2
		}
	}
	aU.extend(bu.prototype, {
		getNumSteps : function() {
			return this._steps.length
		},
		getStep : function(T) {
			if (this._steps[T]) {
				return this._steps[T]
			}
		},
		getDistance : function(T) {
			if (T === false) {
				return this._distance
			} else {
				return aJ(this._distance)
			}
		},
		getIndex : function() {
			return this._index
		},
		getPolyline : function() {
			return this._polyline
		},
		getPath : function() {
			return this._points
		},
		getRouteType : function() {
			return this._rt
		},
		getPlanIndex : function() {
			return this._planIndex
		}
	});
	function bU(T) {
		this.title = T.title;
		this.uid = T.uid;
		this.type = T.type;
		this._stops = T.stops.slice(0);
		this._points = T.points.slice(0);
		this._distance = T.distance || 0;
		this._numViaStops = T.numViaStops || 0
	}
	aU.extend(bU.prototype, {
		getNumViaStops : function() {
			return this._numViaStops
		},
		getGetOnStop : function() {
			return this._stops[0]
		},
		getGetOffStop : function() {
			return this._stops[1]
		},
		getPath : function() {
			return this._points
		},
		getPolyline : function() {
			return this._polyline
		},
		getDistance : function(T) {
			if (T === false) {
				return this._distance
			} else {
				return aJ(this._distance)
			}
		}
	});
	function aI(T) {
		this._point = T.point;
		this._index = T.index;
		this._description = T.description;
		this._distance = T.distance || 0;
		this._routeIndex = T.routeIndex || 0;
		this._planIndex = T.planIndex || 0
	}
	aU.extend(aI.prototype, {
		getPosition : function() {
			return this._point
		},
		getIndex : function() {
			return this._index
		},
		getDescription : function(T) {
			if (T === false) {
				return this._description.replace(/<\/?b>/g, "")
			} else {
				return this._description
			}
		},
		getDistance : function(T) {
			if (T === false) {
				return this._distance
			} else {
				return aJ(this._distance)
			}
		},
		getRouteIndex : function() {
			return this._routeIndex
		},
		getPlanIndex : function() {
			return this._planIndex
		}
	});
	window.BMAP_HIGHLIGHT_STEP = 1;
	window.BMAP_HIGHLIGHT_ROUTE = 2;
	var a6 = function(T, co) {
		bK.call(this, T, co);
		this._overlays = [];
		this._curIndex = -1;
		this._queryList = [];
		var cn = this;
		var cm = this._opts.renderOptions;
		if (cm.highlightMode != BMAP_HIGHLIGHT_STEP
				&& cm.highlightMode != BMAP_HIGHLIGHT_ROUTE) {
			cm.highlightMode = BMAP_HIGHLIGHT_STEP
		}
		cc.load("route", function() {
			cn._asyncSearch()
		})
	};
	a6.ROAD_TYPE = [ "", "\u73af\u5c9b", "\u65e0\u5c5e\u6027\u9053\u8def",
			"\u4e3b\u8def", "\u9ad8\u901f\u8fde\u63a5\u8def",
			"\u4ea4\u53c9\u70b9\u5185\u8def\u6bb5", "\u8fde\u63a5\u9053\u8def",
			"\u505c\u8f66\u573a\u5185\u90e8\u9053\u8def",
			"\u670d\u52a1\u533a\u5185\u90e8\u9053\u8def", "\u6865",
			"\u6b65\u884c\u8857", "\u8f85\u8def", "\u531d\u9053",
			"\u5168\u5c01\u95ed\u9053\u8def",
			"\u672a\u5b9a\u4e49\u4ea4\u901a\u533a\u57df",
			"POI\u8fde\u63a5\u8def", "\u96a7\u9053", "\u6b65\u884c\u9053",
			"\u516c\u4ea4\u4e13\u7528\u9053", "\u63d0\u524d\u53f3\u8f6c\u9053" ];
	aU.inherits(a6, bK, "DWRoute");
	aU.extend(a6.prototype, {
		search : function(cm, T) {
			this._queryList.push({
				method : "search",
				arguments : [ cm, T ]
			})
		}
	});
	window.BMAP_DRIVING_POLICY_LEAST_TIME = 0;
	window.BMAP_DRIVING_POLICY_LEAST_DISTANCE = 1;
	window.BMAP_DRIVING_POLICY_AVOID_HIGHWAYS = 2;
	function m(T, cm) {
		a6.call(this, T, cm);
		cm = cm || {};
		this.setPolicy(cm.policy);
		this.QUERY_TYPE = bv;
		this.RETURN_TYPE = q;
		this.ROUTE_TYPE = BMAP_ROUTE_TYPE_DRIVING;
		this.TRANS_INFO_WND_TYPE = x
	}
	aU.inherits(m, a6, "DrivingRoute");
	m.TURN_TYPE = [ "", "\u76f4\u884c", "\u53f3\u524d\u65b9\u8f6c\u5f2f",
			"\u53f3\u8f6c", "\u53f3\u540e\u65b9\u8f6c\u5f2f", "\u8c03\u5934",
			"\u5de6\u540e\u65b9\u8f6c\u5f2f", "\u5de6\u8f6c",
			"\u5de6\u524d\u65b9\u8f6c\u5f2f", "\u7a0d\u5411\u5de6\u8f6c",
			"\u76f4\u884c", "\u7a0d\u5411\u53f3\u8f6c",
			"\u6b63\u5317\u65b9\u5411", "\u4e1c\u5317\u65b9\u5411",
			"\u6b63\u4e1c\u65b9\u5411", "\u4e1c\u5357\u65b9\u5411",
			"\u6b63\u5357\u65b9\u5411", "\u897f\u5357\u65b9\u5411",
			"\u6b63\u897f\u65b9\u5411", "\u897f\u5317\u65b9\u5411" ];
	m.RET_TYPE = [ "", "\u4ece\u8d77\u70b9\u51fa\u53d1",
			"\u5230\u8fbe\u76ee\u7684\u5730", "\u9014\u7ecf\u70b9",
			"\u884c\u9a76" ];
	m.IWGO = [ "\u5728", "\u4ece", "\u4ece" ];
	m.IWTO = [ "", "", "\u79bb\u5f00" ];
	m.PWTYPE = [ "\u8fc7", "\u5728" ];
	m.PSTYPE = [ "\u5de6\u4fa7\u7684", "\u53f3\u4fa7\u7684", "" ];
	m.DWTYPE = [ "", "\u671d" ];
	aU.extend(m.prototype, {
		setPolicy : function(T) {
			if (T >= BMAP_DRIVING_POLICY_LEAST_TIME
					&& T <= BMAP_DRIVING_POLICY_AVOID_HIGHWAYS) {
				this._opts.policy = T
			} else {
				this._opts.policy = BMAP_DRIVING_POLICY_LEAST_TIME
			}
		},
		toString : function() {
			return "DrivingRoute"
		}
	});
	function ce(T, cm) {
		a6.call(this, T, cm);
		this.QUERY_TYPE = bh;
		this.RETURN_TYPE = w;
		this.ROUTE_TYPE = BMAP_ROUTE_TYPE_WALKING;
		this.TRANS_INFO_WND_TYPE = i
	}
	aU.inherits(ce, a6, "WalkingRoute");
	ce.TURN_TYPE = [
			"",
			"\u76f4\u8d70",
			"\u5411\u53f3\u524d\u65b9\u8f6c",
			"\u53f3\u8f6c",
			"\u5411\u53f3\u540e\u65b9\u8f6c",
			"\u5411\u540e\u8f6c",
			"\u5411\u5de6\u540e\u65b9\u8f6c",
			"\u5de6\u8f6c",
			"\u5411\u5de6\u524d\u65b9\u8f6c",
			"\u5de6\u8f6c\u7a7f\u8fc7\u9a6c\u8def\u5e76\u7ee7\u7eed\u5411\u524d",
			"\u53f3\u8f6c\u7a7f\u8fc7\u9a6c\u8def\u5e76\u7ee7\u7eed\u5411\u524d",
			"\u5de6\u8f6c\u7a7f\u8fc7\u9a6c\u8def\u5e76\u5f80\u56de\u8d70",
			"\u53f3\u8f6c\u7a7f\u8fc7\u9a6c\u8def\u5e76\u5f80\u56de\u8d70",
			"\u6b63\u5317\u65b9\u5411", "\u4e1c\u5317\u65b9\u5411",
			"\u6b63\u4e1c\u65b9\u5411", "\u4e1c\u5357\u65b9\u5411",
			"\u6b63\u5357\u65b9\u5411", "\u897f\u5357\u65b9\u5411",
			"\u6b63\u897f\u65b9\u5411", "\u897f\u5317\u65b9\u5411", "", "", "",
			"" ];
	ce.RET_TYPE = [ "", "\u4ece\u8d77\u70b9\u51fa\u53d1",
			"\u5230\u8fbe\u76ee\u7684\u5730", "\u9014\u7ecf\u70b9", "\u8d70" ];
	ce.IWGO = [ "\u5728", "\u4ece", "\u4ece" ];
	ce.IWTO = [ "", "", "\u79bb\u5f00" ];
	ce.PWTYPE = [ "\u8fc7", "\u5728" ];
	ce.PSTYPE = [ "\u5de6\u4fa7\u7684", "\u53f3\u4fa7\u7684", "" ];
	ce.DWTYPE = [ "", "\u671d" ];
	aU.extend(ce.prototype, {
		toString : function() {
			return "WalkingRoute"
		}
	});
	function aK(cm) {
		this._opts = {};
		aU.extend(this._opts, cm);
		this._queryList = [];
		var T = this;
		cc.load("othersearch", function() {
			T._asyncSearch()
		})
	}
	aU.inherits(aK, aU.lang.Class, "Geocoder");
	aU.extend(aK.prototype, {
		getPoint : function(T, cn, cm) {
			this._queryList.push({
				method : "getPoint",
				arguments : [ T, cn, cm ]
			})
		},
		getLocation : function(T, cn, cm) {
			this._queryList.push({
				method : "getLocation",
				arguments : [ T, cn, cm ]
			})
		},
		toString : function() {
			return "Geocoder"
		}
	});
	function ab(cm) {
		this._opts = {};
		aU.extend(this._opts, cm);
		this._queryList = [];
		var T = this;
		cc.load("othersearch", function() {
			T._asyncSearch()
		})
	}
	aU.extend(ab.prototype, {
		getCurrentPosition : function(cm, T) {
			this._queryList.push({
				method : "getCurrentPosition",
				arguments : [ cm, T ]
			})
		},
		getStatus : function() {
			return this._status
		},
		toString : function() {
			return "Geolocation"
		}
	});
	function bN(cm) {
		this._opts = {
			renderOptions : {
				map : null
			}
		};
		aU.extend(this._opts, cm);
		this._queryList = [];
		var T = this;
		cc.load("othersearch", function() {
			T._asyncSearch()
		})
	}
	aU.inherits(bN, aU.lang.Class, "LocalCity");
	aU.extend(bN.prototype, {
		get : function(T) {
			this._queryList.push({
				method : "get",
				arguments : [ T ]
			})
		},
		toString : function() {
			return "LocalCity"
		}
	});
	function a7(cn, cm) {
		s.call(this, cn, cm);
		this.QUERY_TYPE_BUSLIST = E;
		this.RETURN_TYPE_BUSLIST = aM;
		this.QUERY_TYPE_BUSLINE = a0;
		this.RETURN_TYPE_BUSLINE = ca;
		this._queryList = [];
		var T = this;
		cc.load("buslinesearch", function() {
			T._asyncSearch()
		})
	}
	aU.inherits(a7, s);
	aU.extend(a7.prototype, {
		getBusList : function(T) {
			this._queryList.push({
				method : "getBusList",
				arguments : [ T ]
			})
		},
		getBusLine : function(T) {
			this._queryList.push({
				method : "getBusLine",
				arguments : [ T ]
			})
		},
		setGetBusListCompleteCallback : function(T) {
			this._opts.onGetBusListComplete = T || function() {
			}
		},
		setGetBusLineCompleteCallback : function(T) {
			this._opts.onGetBusLineComplete = T || function() {
			}
		},
		setBusListHtmlSetCallback : function(T) {
			this._opts.onBusListHtmlSet = T || function() {
			}
		},
		setBusLineHtmlSetCallback : function(T) {
			this._opts.onBusLineHtmlSet = T || function() {
			}
		},
		setPolylinesSetCallback : function(T) {
			this._opts.onPolylinesSet = T || function() {
			}
		}
	});
	function aa(T, cm) {
		window.BMap[T] = cm
	}
	aa("Map", bj);
	aa("Hotspot", bY);
	aa("MapType", b6);
	aa("Point", bR);
	aa("Pixel", bg);
	aa("Size", av);
	aa("Bounds", bw);
	aa("TileLayer", n);
	aa("Projection", aY);
	aa("Copyright", ak);
	aa("Overlay", bq);
	aa("Label", Y);
	aa("Marker", X);
	aa("Icon", K);
	aa("Polyline", f);
	aa("Polygon", bZ);
	aa("InfoWindow", by);
	aa("Circle", a);
	aa("Control", b1);
	aa("NavigationControl", J);
	aa("OverviewMapControl", cl);
	aa("CopyrightControl", ad);
	aa("ScaleControl", bt);
	aa("MapTypeControl", ay);
	aa("TrafficLayer", ar);
	aa("ContextMenu", cb);
	aa("MenuItem", aZ);
	aa("SearchRequestMgr", aW);
	aa("LocalSearch", aO);
	aa("TransitRoute", aH);
	aa("DrivingRoute", m);
	aa("WalkingRoute", ce);
	aa("Geocoder", aK);
	aa("LocalCity", bN);
	aa("Geolocation", ab);
	aa("BusLineSearch", a7);
	window.BMap.apiLoad();
})();
var _key = ""